51 单片机C 语言中断程序 定时/计数器 程序一 利用定时/计数器T0 从 P1
0 输出周期为 1s 的方波, 让发光二极管以 1HZ 闪烁, #include //52 单片机头文件 #include //包含有左右循环移位子函数的库 #define uint unsigned int //宏定义 #define uchar unsigned char //宏定义 sbit P1_0=P1^0; uchar tt; void main() //主函数 { TMOD=0x01;//设置定时器0 为工作方式 1 TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1;//开总中断 ET0=1;//开定时器0 中断 TR0=1;//启动定时器0 while(1);//等待中断产生 } void timer0() interrupt 1 { TH0=(65536-50000)/256; TL0=(65536-50000)%256; tt++; if(tt==20) { tt=0; P1_0=~ P1_0; } } 程序二 利用定时/计数器T1 产生定时时钟, 由P1 口控制8 个发光二极管, 使8 个指示灯依次一个一个闪动, 闪动频率为10 次/秒(8 个灯依次亮一遍为一个周期),循环
#include //52 单片机头文件 #include //包含有左右循环移位子函数的库 #define uint unsigned int //宏定义 #define uchar unsigned char //宏定义 sbit P1_0=P1^0; uchar tt,a; void main() //主函数 { TMOD=0x01;//设置定时器0 为工作方式1 TH0=(65536-50000)/256; TL0=(65536-5000