永发信息网

单片机中断的问题 求解释单片机中断(串口,定时器)的工作过程,通俗易懂

答案:2  悬赏:70  手机版
解决时间 2021-02-08 23:58
  • 提问者网友:温柔港
  • 2021-02-08 16:02
#include
#include
unsigned int x;
unsigned char code table[]={^^^};
void delay()
{
~~~;
}
void display(unsigned int k)
{
P2=0xfe;
P0=table[k/1000];
delay();

P2=0xfd;
P0=table[(k%1000)/100];
delay();
~~~;
}

void main()
{
TMOD=0x01;
TH0=~~~;
TL0=~~~;
EA=1;
ET0=1;
TR0=1;
while(1)
{
display(x);
}
}

void Time0() interrupt 1
{
TR0=0;
i++;
if(i==20)
{
x=rand()/10;
i=0;
}
TH0=(65536-50000)/256;
TH0=(65536-50000)%256;
}
最佳答案
  • 五星知识达人网友:洒脱疯子
  • 2021-02-08 16:56
设置中断工作模式

TMOD=0x01;
开中断T0:
ET0=1;

如定时器中断
TH0=(65536-50000)/256;
TH0=(65536-50000)%256;
赋初值
EA = 1;开总中断
TR0 启动定时器
根据初值在 5MS执行一次中断 假设 12MHZ
就这样吧

以上设置

工作就是如上定时器中断:简单的说 定时 时间 到了中断 以上定时5MS中断

也就是说 每5MS中断一次

流程

主程序
循环
5MS 执行后
转入中断程序 中断执行完毕 返回 主程序5MS执行中断程序前的 断点

就这样吧

好比 你吃饭被人电话打断接了个电话继续吃饭
全部回答
  • 1楼网友:雾月
  • 2021-02-08 18:24
1. 如果串口也是用的t1,就不行。 如果不是,就可以。 2. 利用51单片机的定时器1的溢出率产生波特率,并不需要打开 t1 的中断。 如果打开了,你就应该编写相应的中断程序。 如果,你没有写中断程序,那么,它中断后,自然就会给你添乱。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯