单片机如何同时开定时器中断和串行口中断?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单片机如何同时开定时器中断和串行口中断?相关的知识,希望对你有一定的参考价值。
求助,本人用8051单片机串口发送数据,当要用定时器中断时,加入中断就无法运行了,这是为什么?
void UART0_Init(void)
SFRPAGE = UART0_PAGE;
SCON0 = 0x50; // SCON0: mode 1, 8-bit UART, enable RX
SSTA0 = 0x10; // SMOD00 = 1
TMOD = 0x20; // TMOD: timer 1, mode 2, 8-bit reload
TH1 = -(SYSCLK/BAUDRATE/16); // set Timer1 reload value for baudrate
TR1 = 1; // start Timer1
CKCON |= 0x10; // Timer1 uses SYSCLK as time base
TI0 = 1; // Indicate TX0 ready
viod TIMER init()
TMOD |=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
ET0 = 1;
TR0 = 1;
void main()
UART0_Init() ;
TIMER init();
.-
-
-
-
这样就直接卡死了,求解决方法!谢谢
单片机怎么清中断标志位
希望给出具体的语句,谢谢
51单片机
下面是51单片机的汇编和C语言清除中断的语句。
汇编:
CLR IE0 ;清除外部中断INT0请求标志
CLR IE1 ;清除外部中断INT1请求标志
CLR TF0 ;清除定时器T0中断请求标志
CLR TF1 ;清除定时器T1中断请求标志
CLR RI ;串行通讯接收中断请求标志
CLR TI ;串行通讯发送中断请求标志
C语言:
IE0=0; //清除外部中断INT0请求标志
IE1=0; //清除外部中断INT1请求标志
TF0=0; //清除定时器T0中断请求标志
TF1=0; //清除定时器T1中断请求标志
RI=0; //串行通讯接收中断请求标志
TI=0; //串行通讯发送中断请求标志本回答被提问者采纳 参考技术B 有两种方法:
1、采用中断的方法,此方法是机器自己完成的(除去
串行口中断);
举例:
org 00h
sjmp main
org 0bh
sjmp t_0
org 30h
main:mov sp,#60h
mov ie,#82h
mov tmod,#01h
mov th0,#0b1h
mov tl0,#0e0h
setb tr0
sjmp $
t_0: mov tmod,#01h
mov th0,#0b1h
cpl p2.1
reti
end
2、采用查询的方法,此方需要人工加以相应的指令完
成;
org 00h
sjmp main
org 30h
main:mov sp,#60h
mov ie,#82h
mov tmod,#01h
mov th0,#0b1h
mov tl0,#0e0h
setb tr0
loop:jnb tr0,loop
clr tr0
mov th0,#0b1h
mov tl0,#0e0h
cpl p2.1
sjmp loop
end 参考技术C 还是很简单的 对中断寄存器操作就可以了 参考技术D 这个你只是找本书看看都有的.....不过不知道你的单干片机是51的还是AVR的/.....
以上是关于单片机如何同时开定时器中断和串行口中断?的主要内容,如果未能解决你的问题,请参考以下文章