51单片机常用程序段

***********************************************************
编者按:
子程序使用前要声明,否则就要放在主程序前,声明不要忘记了带形参和后面的分号.
for语句后面的大括号可以省略,省略的就要在结束语句后加分号,分号以后不属于for语句.
中断程序不需要声明。
t++和++t的区别是,前者是先取t的值,然后再++,后者是先++然后再赋给t值
***********************************************************
//51基本程序框架
#include
#define uint unsigned int
#define uchar unsigned char
sbit D1=P1^0;
void delay(uint z);//子程序声明
void main()
{
D1=0;
}
***********************************************************
//延时子程序,使用的是软件延时.
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=210;y>0;y--);
}
***********************************************************
//流水灯关键头文件和参数, 非完整程序
#include
temp=0xfe;//初值
for(num=0;num<7;num++)//循环计数
{
P1=temp;
_delay(100);
temp=_crol_(temp,1);//调用移位函数循环向高位
_delay(100);
}

***********************************************************
//计时器T0初始化,要求计时15.536ms,使用12MHz晶振.
void init()
{
TMOD=0x01;//计时器工作模式选定为工作方式1,当前选定16位累加计时.
TH0=-50000/256;//计数器0高八位赋初值65536-15536=5000,256为八位计数器最大计数个数
TL0=-50000%256;//计数器0低八位赋初值
EA=1;//CPU开中断,为0时CPU屏蔽所有的中断.对应的interrupt中断程序优先级为 1
ET0=1;//定时器0开中断
TR0=1;//定时器0开始计时,控制寄存器Tcon中的一位
}
void time0() interrupt 1
{
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
tt++;//主程序中判断tt的值,可以设置长时间的计时.
}
***********************************************************
//外部中断INT0初始化
void init()
{
EA=1;//开总中断
EX0=1;//开外部中断0,对应的interrupt中断程序优先级为 0
//IT0=1;//将触发方式改成跳变沿触发,默认为低电平触发
TCON=0x01;//另一种将触发方式改成跳变沿触发的方法
}
***********************************************************




相关文档
最新文档