各位大牛,小弟今天編寫C51串口中斷程序時,遇到了一個問題,就是用SSCOM32串口調試助手發送程序,顯示成這樣:
請問這是什么原因呢?本人的開發板是普中科技的,數據線也連接得好好的,網上有人說要裝虛擬串口。
以下是小弟的代碼,還請大家指點!感激不盡!
- #include "reg52.h"
- #define uchar unsigned char
- #define uint unsigned int
- unsigned char flag,a,i;
- uchar code table[] = "I get ";
- void init()
- {
- TMOD = 0x20; //設定T1定時器工作方式2
- TH1 = 0xfd; //T1定時器裝初值
- TL1 = 0xfd; //T1定時器裝初值
- TR1 = 1; //啟動T1定時器
- REN = 1; //允許串口接收位
- SM0 = 0; //設定串口工作方式1
- SM1 = 1; //同上
- EA = 1; //開總中斷
- ES = 1; //開串口中斷
- }
- void main()
- {
- init();
- while(1)
- {
- if(flag == 1) //當檢測到flag為1時,說明程序已經執行過串口中斷服務,即受到了數據
- {
- ES = 0; //接下來要發送數據,若不關閉串口中斷,當發送完數據后,單片機同樣會申請串口中斷
- for(i = 0;i < 6;i ++)
- {
- SBUF = table[i]; //發送數據
- while(!TI); //等待發送完畢
- TI = 0;
- }
- SBUF = a; //發送從PC端接收到的數據
- TI = 0;
- ES = 1; //發送完畢后,重新打開串口中斷
- flag = 0;
- }
- }
- }
- void ser() interrupt 4
- {
- RI = 0;
- a = SBUF; //接收數據
- flag = 1;
- }
復制代碼
|