×
单片机 > 单片机程序设计 > 详情

51单片机常用功能函数

发布时间:2020-09-03 发布时间:
|
delay延时函数  
void delayms (uint xms)  //(毫秒单位)
{
   uint i,j;
   for(i=xms;i>0;i--)
      for(j=110;j>0;j--)
 
}
 
 
单片机 外部中断0设置开启  P3.2口为中断0出入口
EA=1; //开启总中断
EX0=1;//开启外部中断0
TCON=0x01;//设置触发方式(此方式为下降沿)可对每一位操作
void exter0 () interrupt 0 //中断程序
{
    ......
 
 
时钟中断  1秒钟时钟  晶振为11.0592
//注意:1.对TMOD赋值,确定T0和T1的工作方式。2.计算初值,写入TH0、TL0或TH1、TL1。
     3.中断方式,对IE赋值,开放中断。4.使TR0或TR1置位,启动定时器/计数器时或计数。
void main
{
TMOD=0x01;//设置定时器0模式(16位,定时器模式,内部)       也可以将初始化单独写成函数
TH0=(65536-50000)/256;//装初值
TL0=(65536-50000)%6;
EA=1;//开总中断
ET=1;//开定时器0中断
TR0=1;//启动定时器0
 
if(tt==20)
{
  tt=0;
  .......
}
 }
 void timer0() interrupt 1  //定时器中断
 
TH0=(65536-50000)/256;//由于进入中断16为计数器会清零,所以重新赋值
TL0=(65536-50000)%6;
tt++;
 }
 
 
 
 按键消除浪涌处理
 void main()
 {  
if(key1==0)
{
delay(5);//尽量在5毫秒以上
if(key1==0)
{
// d1=0;
// num++;           这里可以写自己需要的程序
// if(num==10)
// num=0;
}
while(!key1);//判断是否松手
delay(5);//消除松手时产生的浪涌
while(!key1);
 }
 
 
 
 
 DA转化
 void main()
 {
    P3.2=0;//DA的CS-为低电平有效,打开DA的片选
P3.6=0;//DA的wr低电平,
    P0=0xFF;//把灯点亮,而且是最亮。如果  P0=0;灯灭.   P0输出不同的2进制可以控制LED的亮度。     
    while(1);
 
 }
 
 
 
 
 AD转换   AD0804


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
ARM 汇编的必知必会