C51学习 之 中断

中断编程步骤

  1. TMOD设置工作方式 和 定时器/计时器 ,TMOD见下图;
  2. 设置TH0 TH1的初值,定时器计算公式: 定时时间/(12/主频);
  3. 设置EA,设置某个中断(EX0, ET0, EX1, ET1, ES, ET2)(IE寄存器);
  4. 设置中断优先级(1和0两个等级,1的优先级高)(IP寄存器);(省略则默认)
  5. TR0 开启定时器。

代码

 1 #include <reg52.h>
 2 
 3 sbit led = P1^0;
 4 
 5 void init()
 6 {
 7     TMOD = 0x01;   //定时器0
 8     TH0 = (65535 - 50000 * 12 / 12) / 256; //12MHz主频  定时1s  此处50ms
 9     TL0 = (65535 - 50000 * 12 / 12)% 256;
10     EA = 1;
11     ET0 = 1;
12     TR0 = 1;
13 }
14 
15 void on_T0Timer() interrupt 1
16 {
17     static unsigned int num = 0;
18     TH0 = (65535 - 50000 * 12 / 12) / 256;
19     TL0 = (65535 - 50000 * 12 / 12)% 256;
20   num++;
21     if (num == 20) {
22         num = 0;
23         led = ~led;
24     }
25 }
26 
27 int main()
28 {
29     init();
30     while(1);
31 }

 

 

 

 

 

 

posted on 2021-05-30 17:56  向斯拉夫人告别  阅读(161)  评论(0编辑  收藏  举报

导航