久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
單片機串口中斷進不了,是中斷優(yōu)先級沒設置嗎?怎么改呢
[打印本頁]
作者:
sr861126
時間:
2023-5-5 10:22
標題:
單片機串口中斷進不了,是中斷優(yōu)先級沒設置嗎?怎么改呢
/*-----------------------------------------------
名稱:串口通信
內容:連接好串口或者usb轉串口至電腦,下載該程序,打開電源
打開串口調試程序,將波特率設置為9600,無奇偶校驗
晶振11.0592MHz,發(fā)送和接收使用的格式相同,如都使用
字符型格式,按復位重啟程序,可以看到接收到 UART test, 請在發(fā)送區(qū)輸入任意信
然后在發(fā)送區(qū)發(fā)送任意信息,接收區(qū)返回同樣信息,表明串口收發(fā)無誤
------------------------------------------------*/
#include<reg52.h> //包含頭文件,一般情況不需要改動,頭文件包含特殊功能寄存器的定義
#include <intrins.h>
typedef unsigned char u8;
typedef unsigned int u16;
typedef unsigned long u32;
u8 xdata buf[10]={1,2,3,4,5,6,7,8,9,0xA};
u8 code buf1[10]={1,2,3,4,5,6,7,8,9,0xA};
sbit k1=P1^4;
sfr P4 =0Xe8;
sbit P4_0 = P4^0;
unsigned char Temp[];
u8 flag;
u8 i ;
bit ready=0;
j=0x00;
unsigned char gotData[9];
u8 jscos,jk;
/*------------------------------------------------
函數(shù)聲明
------------------------------------------------*/
void SendStr(unsigned char *s);
void Send_data();
void delaynms(unsigned int di) //延時
{
unsigned int da,db;
for(da=0;da<di;da++)
for(db=0;db<10;db++);
}
/*------------------------------------------------
串口初始化
------------------------------------------------*/
void InitUART (void)
{
SCON = 0x50; // SCON: 模式 1, 8-bit UART, 使能接收
// // TMOD: timer 1, mode 2, 8-bit 重裝
TMOD |= 0x21; //T1方式2、T0方式1
TH1 = 0xFD; // TH1: 重裝值 9600 波特率 晶振 11.0592MHz
TL1 = 0xfd; //波特率
TR1 = 1; // TR1: timer 1 打開
IE |= 0x92; //開啟中斷
EA = 1; //打開總中斷
ES = 1; //打開串口中斷
}
void Init_Timer1(void)
{
TMOD |= 0x01; //使用模式1,16位定時器,使用"|"符號可以在使用多個定時器時不受影響
TH1=(65535-20000)/256;
TL1=(65535-20000)%256;
EA=1; //總中斷打開
ET1=1; //定時器中斷打開
TR1=1; //定時器開關打開
}
void Init_Timer0(void)
{
TMOD |= 0x01; //使用模式1,16位定時器,使用"|"符號可以在使用多個定時器時不受影響
TH0=(65535-10000)/256;
TL0=(65535-10000)%256;
EA=1; //總中斷打開
ET0=1; //定時器中斷打開
TR0=1; //定時器開關打開
}
/*------------------------------------------------
主函數(shù)
------------------------------------------------*/
void main (void)
{
u8 i;
InitUART();
Init_Timer0();
//SendStr("UART test,請在發(fā)送區(qū)輸入任意信息");
Init_Timer1();
//打開串口中斷
while (1)
{
if( flag)
{
for(i=0;i<9;i++)
{
SBUF= gotData[ i];
while(!TI);TI=0;
}
if(gotData[0]==0xFF)
{
// P4_0=!P4_0;
jk=1;
}
flag=0;
}
if(jscos==1)
{
Send_data();
jscos=0;
}
}
}
void Send_data()
{ u8 l;
for(l=0;l<10;l++)
{
SBUF=buf1[l];
while(!TI);
TI = 0;
}
}
/*------------------------------------------------
發(fā)送一個字節(jié)
------------------------------------------------*/
void SendByte(unsigned char buf1)
{
SBUF = buf1;
while(!TI);
TI = 0;
}
/*------------------------------------------------
發(fā)送一個字符串
------------------------------------------------*/
void SendStr(unsigned char *s)
{
while(*s!='\0')// \0 表示字符串結束標志,通過檢測是否字符串末尾
{
SendByte(s);
s++;
}
}
void timer0(void) interrupt 1
{
static u16 count;
TH0=(65535-10000)/256;
TL0=(65535-10000)%256;
// TR0 = 0; //關閉T0
j = i; //暫存接收到的數(shù)據(jù)幀長度
i = 0x00; //長度清零
ready = 1; //置位接收完成標志
if (count >500&&jk==1)
{
// LED = ~LED;
// P4_0=!P4_0; count = 0;
jscos=1;
}
count ++;
}
void timer1(void) interrupt 3
{
static u16 count;
TH1=(65535-20000)/256;
TL1=(65535-20000)%256;
// TR0 = 0; //關閉T0
j = i; //暫存接收到的數(shù)據(jù)幀長度
i = 0x00; //長度清零
ready = 1; //置位接收完成標志
//
if(count>15000)
{
count=0; P4_0=!P4_0;
}
count++;
}
/* void Timer0_isr(void) interrupt 1 using 1
{
TH0=0x00; //重新賦值
TL0=0x00;
LED=~LED; //指示燈反相,可以看到閃爍
} */
/*------------------------------------------------
串口中斷程序
------------------------------------------------*/
void UART_SER (void) interrupt 4 //串行中斷服務程序
{
//定義臨時變量
if(RI) //判斷是接收中斷產生
{
RI = 0; //清零接收中斷標志位
TH0 = 0xf8;
TL0 = 0x2f; //2ms定時
TR0 = 1; //開啟T0
gotData[i++] = SBUF; //讀取收到的字節(jié)
}
if(i==9)
{
i=0;
flag=1;
}
}
作者:
xuyaqi
時間:
2023-5-5 16:04
串口接收應該一直打開,而不應該由定時0控制,main循環(huán)里if( )括號里應該填寫判斷依據(jù)。
作者:
ydatou
時間:
2023-5-5 16:22
你InitUART()中是配置T1做波特率發(fā)生器。
但是Init_Timer1()又把T1配置成定時器了。
串口自然失效了。
作者:
sr861126
時間:
2023-5-5 16:59
ydatou 發(fā)表于 2023-5-5 16:22
你InitUART()中是配置T1做波特率發(fā)生器。
但是Init_Timer1()又把T1配置成定時器了。
串口自然失效了。
我用了T2,問題解決了
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
国产在线播放一区二区三区
|
国产精品www
|
国产成人精品在线
|
99精品视频在线
|
亚洲国产精品人人爽夜夜爽
|
粉嫩一区二区三区四区公司1
|
国产精品国产三级国产aⅴ中文
|
蜜桃传媒一区二区
|
国产精品一区在线观看
|
91就要激情
|
欧美国产日韩在线观看成人
|
国产精品成人av
|
天天操夜夜看
|
美女黄视频网站
|
成年人在线电影
|
精品久久久久国产免费第一页
|
日韩欧美一区二区三区
|
日韩中文一区
|
中文字幕乱码一区二区三区
|
精品一区精品二区
|
中文字幕一区二区在线观看
|
天天久久
|
国产免费麻豆视频
|
国产欧美一区二区三区日本久久久
|
免费成人在线网站
|
野狼在线社区2017入口
|
九九精品在线
|
国产精品久久久av
|
国产91av视频在线观看
|
国产精品视频中文字幕
|
国产一级电影在线观看
|
亚洲视频在线一区
|
欧美一区在线视频
|
亚洲一区二区免费
|
亚洲免费在线播放
|
av日日操
|
国产一区二区精
|
欧美涩涩网
|
91亚洲国产成人久久精品网站
|
日本黄色激情视频
|
91pao对白在线播放
|