欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
單片機串口控制定時器0定時時長有問題
[打印本頁]
作者:
xxjjyy2008
時間:
2020-4-26 17:35
標題:
單片機串口控制定時器0定時時長有問題
芯片STC11F32EX
定時器0作為定時用,通過串口下發定時數據到單片機,實現通過串口實時改變定時器0時長的功能。
發現發一次數據后,串口就不工作了,不能收發數據了。軟件仿真調試發現SCON變為0x55。大神們幫忙看看啥原因?
1.PNG
(18.8 KB, 下載次數: 33)
下載附件
2020-4-26 17:34 上傳
代碼片段:
void main()
{
ENA=1;
PUL=0;
DIR=0; //初始化電機反轉
Init_Timer(); //初始化定時器
Init_Uart();
while(1)
{
Key_Scan();
}
}
void Init_Timer() //初始化定時器
{
TMOD |= 0x01;
AUXR |= 0x80; //timer0工作在1T模式
TH0=(65536-CYCLE)/256; //給time0裝初值
TL0=(65536-CYCLE)%256;
TR0=1;
IE |= 0x82;
}
void Init_Uart()
{
EA = 1; //打開總中斷
ES = 1; //打開串口中斷
SM0 = 0; SM1 = 1;//串口工作方式1,8位UART波特率可變
REN = 1;//串口允許接收
TR1 = 1;//啟動定時器1
TMOD |= 0x20;//定時器1,工作模式2 8位自動重裝
TH1 = 0xfd;
TL1 = 0xfd;//設置比特率9600
}
void Enter_Timer0() interrupt 1 //進入定時器中斷
{
TH0=(65536-CYCLE)/256;
TL0=(65536-CYCLE)%256;
PUL=~PUL;
}
//串口中斷函數
void UART() interrupt 4
{
if(RI)//判斷接收是否完成
{
num = SBUF;//讀SBUF,讀出串口接收到的數據
RI = 0;//軟件清零接收標志位
SBUF = num;//寫SBUF,把要發送的數據送給發送緩存器
if(num <= 3 & num >=0)
CYCLE=SPEED_LIST[num];
}
if(TI)//判斷是否發送完成
TI = 0;//清零發送完成標志位
}
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1