仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
0.png (12.32 KB, 下載次數: 28)
下載附件
2019-6-6 20:00 上傳
單片機源程序如下:
- #include <reg52.h>
- #define uchar unsigned char
- #define uint unsigned int
- uint time;
- sbit led=P1^0;
- /*************************延時程序*********************/
- void delay(uint count) //1ms延時
- {
- uint x,y;
- for(x=0;x<count;x++)
- for(y=0;y<120;y++);
- }
- /*void delay(uint z)
- {
- uint x,y;
- for(x = z; x > 0; x--)
- for(y = 114; y > 0 ; y--);
- }
- */
- void timer2_main()
- {
- // T2MOD=0; //配置定時器2控制寄存器,這里其實不用配置,T2CON上電默認就是0
- // T2CON=0; //配置定時器2工作模式寄存器,這里其實不用配置,T2MOD上電默認就是0
- TH2=(65536-50000)/256; //定時器2賦初值
- TL2=(65536-50000)%256; //50ms
- ET2=1; //開定時器2中斷
- EA=1;
- TR2=1; //啟動定時器2
- }
- /*
- void UART_init()
- {
- TMOD = 0x20; //T1工作模式2 8位自動重裝
- TH1 = 0xfd;
- TL1 = 0xfd; //比特率9600
- TR1 = 1; //啟動T1定時器
- SM0 = 0;
- SM1 = 1; //串口工作方式1 10位異步
- // REN = 1; //串口允許接收
- EA = 1; //開總中斷
- // ES = 1; //串口中斷打開
- }
- void UART() //interrupt 4
- {
- SBUF = "你好";// 06 02 78;
- while(!TI);
- TI = 0;
- }*/
- void main()
- {
- timer2_main(); //定時器T2初始化
- // UART_init(); //串口初始化
- while(1){
- /* if(SET==0) //設定按鍵按下
- {
- delay(5);
- if(SET==0)
- { //延時去除抖動再次判斷是否按下按鍵
- UART();
- while(!SET);
- }
- } */
- }
- }
- void timer2() interrupt 5
- {
- TF2=0; //!!!注意!!! 定時器2必須由軟件對溢出標志位清零,硬件不能清零
- time++;
- if(time==100) //定時50ms×100=5000ms即5秒鐘
- {
- time=0;
- led=~led;
- }
- }
復制代碼
所有資料51hei提供下載:
定時器TOME2.zip
(81.29 KB, 下載次數: 52)
2019-6-5 23:46 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|