简单的单片机C程序
单片机程序一般是不让它运行结束的,所以一般让这个程序死在一个循环里面,一般用while(1)或者for(;;),然后再在里面编程,这样单片机不会停止工作。
之一个程序,应该是一直低电平,a=4999的时候死在while(a==0)那个循环里了,而P1_1=0 ,所以不亮,可以改为:
#include *** it P1_1=P1^0; int a ; void main() {
while(1)
{
a=5000; P1_1=0 ; while(a--);
P1_1=1 ;
a=5000; while(a--);
}
这样会保持一直闪烁。
第二个程序,从程序上看,应该只闪烁一次,外层循环再加一层死循环,就可以实现重复闪烁。
求单片机C语言实例
#include #define timeset 65536-15535 //定时器计数值 约50ms(6M晶振时)约100ms(12M晶振时) #define timeH (timeset & 0xff00)>>8 #define timeL timeset & 0xff char Time0_flag,Time1_flag;//定时器中断产生标记 /*******************************************************************/ 函数名:定时器0中断函数 调 用:Time0_Int(); 参 数:无 返回值:无 结 果:启动定时器0计时中断 备 注:定时时间由计数值及系统晶振决定的 /******************************************************************/ void Time0_Int(void) interrupt 1//定时器0 定时时间由timeset决定 { TR0=0;//关定时器0 TMOD=TMOD|0x1;//定时器0工作方式1 TL0=timeL;//低位值 TH0=timeH;//高位值 IE=IE|0x02;//允许定时器0中断 TR0=1;//计时开始 /*以下是用户中断服务程序*/ //Time0_interrupter(); //Time0_flag+=1;标记定时器0中断次数 } /*******************************************************************/ 函数名:定时器1中断函数 调 用:Time1_Int(); 参 数:无 返回值:无 结 果:启动定时器1计时中断 备 注:定时时间由计数值及系统晶振决定的 /******************************************************************/ void Time1_Int(void) interrupt 3//定时器1 定时时间由timeset决定 { TR1=0;//关定时器0 TMOD=TMOD|0x10;//定时器1工作方式1 TL1=timeL;//低位值 TH1=timeH;//高位值 IE=IE|0x08;//允许定时器0中断 TR1=1;//计时开始 /*以下是用户中断服务程序*/ //Time1_interrupter(); //Time1_flag+=1;标记定时器1中断次数 } /*******************************************************************/ 函数名:主函数 调 用:main(); 参 数:无 返回值:无 结 果: 备 注:中断后处理 /******************************************************************/ void main() { while(1){ if(Time1_flag) { Led(1); Time1_flag=0;// } if(Time0_flag) { Led(0); Time0_flag=0;// } }//while() }