单片机中断的问题 求解释单片机中断(串口,定时器)的工作过程,通俗易懂
答案: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. 如果串口也是用的t1,就不行。
如果不是,就可以。
2. 利用51单片机的定时器1的溢出率产生波特率,并不需要打开 t1 的中断。
如果打开了,你就应该编写相应的中断程序。
如果,你没有写中断程序,那么,它中断后,自然就会给你添乱。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯