欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
51單片機串口需不需要中斷的問題
[打印本頁]
作者:
code_404
時間:
2018-9-14 13:03
標題:
51單片機串口需不需要中斷的問題
單片機串口接收發送數據時,到底需不需要引入中斷,下面這個程序就是沒引入中斷,結果是一直在重復顯示發送文本。如果我只想顯示一遍呢。
#include <reg51.h>
typedef unsigned char uint8;
typedef unsigned int uint16;
uint8 Buf[]="hello world!\n";
void delay(uint16 n)
{
while (n--);
}
/*波特率為9600*/
void UART_init(void)
{
SCON = 0x50; //串口方式1
TMOD = 0x20; // 定時器使用方式2自動重載
TH1 = 0xFD; //9600波特率對應的預設數,定時器方式2下,TH1=TL1
TL1 = 0xFD;
TR1 = 1;//開啟定時器,開始產生波特率
}
/*發送一個字符*/
void UART_send_byte(uint8 dat)
{
SBUF = dat; //把數據放到SBUF中
while (TI == 0);//未發送完畢就等待
TI = 0; //發送完畢后,要把TI重新置0
}
/*發送一個字符串*/
void UART_send_string(uint8 *buf)
{
while (*buf != '\0')
{
UART_send_byte(*buf++);
}
}
main()
{
UART_init();
while (1)
{
UART_send_string(Buf);
delay(20000);
}
}
復制代碼
作者:
hu1874966
時間:
2018-9-14 13:45
應該需要加一個中斷
作者:
609763691
時間:
2018-9-14 13:54
首先,51串口需不需要中斷是看你是發送還是接收,就比如你現在的這個發送程序吧,你沒有寫接收程序,所以就不需要中斷函數,串口的發送程序一般不需要到中斷函數里面,還有就是要想值顯示的的只發送一次的數據那你就不能這么寫,不能把發送函數寫到死循環里面(也就是whi(1)這里面),直接這樣寫就好了UART_send_string(Buf);
作者:
sjh666
時間:
2018-9-14 14:54
如果需要指定間隔時間內發送,那么需要一個定時中斷,然后在中斷中發射
如果沒有其他要求
那就看您心情了
作者:
jindizhiwa
時間:
2018-9-14 15:12
你這樣當然會間隔一段時間重復發送,把UART_send_string(Buf);移到while(1)的前面
作者:
wulin
時間:
2018-9-14 15:19
你不設置發送的前提條件當然不斷循環發送。
作者:
wulin
時間:
2018-9-14 15:20
與中斷無關
作者:
sxhwdz
時間:
2018-9-14 19:22
用不用中斷要看你的系統決定,如果系統任務很簡單,可以不用中斷。但是不用中斷的話,就要反復去查詢,占用很多時間。如果系統復雜,要處理的事務很多,就不允許消耗時間用于空等,就必須用中斷方式。
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1