亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码
標題:
單片機定時器與串口中斷不能一起嗎?
[打印本頁]
作者:
hfsdage
時間:
2016-6-7 19:03
標題:
單片機定時器與串口中斷不能一起嗎?
這個源碼燒入單片機后好像不行,單片機沒串口數據的時候就是開機的時候是正常的,一有數據了定時器0就掛了,就不會動了,求大神看看什么問題
#include<reg52.h>
#include<STDIO.H>//printf()
#define uchar unsigned char
#define uint unsigned int //宏定義
bit RXAAOK; //接收到[開頭標志
bit RXFRMOK; //接收一幀完整數據標
bit tflag;
sbit S1=P0^0;
sbit S2=P0^2;
sbit S3=P0^3;
sbit S4=P0^1;
sbit FM=P0^4;
sbit DS=P0^5;
sbit keypad1=P1^0;
sbit keypad2=P1^1;
sbit keypad3=P1^2;
sbit keypad4=P1^3;
/*下面是數碼管位選*/
sbit one=P1^4;
sbit two=P1^5;
sbit three=P1^6;
/*char code table[]={ 0x3f,0x06,0x5b,
0x4f,0x66,0x6d,
0x7d,0x07,0x7f,0x6f};*/
uint temp;
uchar ketnum,t,RXBUF[10],RX_P;
void main()
{
IP = 0x10; //即設置串口中斷為最高優(yōu)先級
TMOD=0x21; //定時器1的工作方式2,定時器0的工作方式1,16位
TH1=0xfd; //定時器1的初值,決定波特率9600
TL1=0xfd;
TH0=0X4C; //高八位的初值 50MS一次
TL0=0X00; //第八位的初值
PCON=0x00; //波特率倍增0x00不加倍 0x80加倍
SCON=0x50; //設置工作方式1 開啟接受允許
EA=1; //開啟總中斷
ES=1; //開啟串口接受中斷
ET0=1; //允許定時器0發(fā)出中斷
TR1=1; //計數器1開始運行
TR0=1; //計數器0開始運行
while(1)
{
if(RXFRMOK)
{
switch(RXBUF[0])
{
case 'A' : S1=~S1;
}
}
}
}
void UARTO_ISR() interrupt 4 //接收中斷,不同處理器可能是不同的函數聲明
{
uchar i; //用處提取接收緩沖器的字符
if(RI)
{
i=SBUF; //提取字符
RI=0;
if(RXFRMOK==0) //判斷是否接收到起始字符[
{
if(RXAAOK) //如果接收到[,繼續(xù)接收后面的字符
{
RXBUF[RX_P]=i; //字符存入數組
if((RX_P>3)&&(RXBUF[RX_P-3]==0x7C)&&(RXBUF[RX_P-2]==0x7D)&&(RXBUF[RX_P-1]==0x7E)&&(RXBUF[RX_P]==0x5D) )
{
RXFRMOK=1; //如果接收完成,置位RXFRMOK;
RXAAOK=0; //清零開始標志位RXAAOK
}
RX_P++; //接收計數器加一
}
if(!RXAAOK&&(i==0x5B)) //字符[,協議格式:[數據|}~]
{
RXAAOK=1;
RX_P=0;
}
}
}
}
void Timer0() interrupt 1
{
TH0=0x4C;
TL0=0x00;
t++;
S1=~S1; //PC串口發(fā)送數據過來后S1就不會翻轉了
}
復制代碼
作者:
flame1o
時間:
2016-12-23 13:42
標志位放在最后清零試試
作者:
颯颯冷遇
時間:
2017-2-20 22:34
樓主這個問題解決了么?解決了告訴我啊啊。
作者:
MCU愛好者
時間:
2017-2-21 08:53
同求這個問題
作者:
期待和努力
時間:
2017-12-3 13:31
解決了許多長期想解決
歡迎光臨 (http://www.denmoz.com/bbs/)
Powered by Discuz! X3.1