這個程序運行后 串口調試助手應該能收到10個“m”才對 可是實際只能收到一個 弄了好長時間也搞不懂 希望各位大神能指導一下 十分感謝!
單片機源程序如下:
- #include "stc15.h"
- # include <intrins.h>
- #define S1_S0 0x40 //P_SW1.6
- #define S1_S1 0x80 //P_SW1.7
- #define FOSC 11059200L //系統(tǒng)頻率
- #define BAUD 4800 //串口波特率
- sbit k=P1^2;
- unsigned char i;
- void delay(unsigned int i)
- {
- while(i--);
- }
- void qie_huan() //串口引腳選擇函數(shù)
- {
-
- /* ACC = P_SW1;
- ACC &= ~(S1_S0 | S1_S1); //S1_S0=0 S1_S1=0
- P_SW1 = ACC; //(P3.0/RxD, P3.1/TxD)
- */
- ACC = P_SW1;
- ACC &= ~(S1_S0 | S1_S1); //S1_S0=1 S1_S1=0
- ACC |= S1_S0; //(P3.6/RxD_2, P3.7/TxD_2)
- P_SW1 = ACC;
- /*
- ACC = P_SW1;
- ACC &= ~(S1_S0 | S1_S1); //S1_S0=0 S1_S1=1
- ACC |= S1_S1; //(P1.6/RxD_3, P1.7/TxD_3)
- P_SW1 = ACC;
- */
- }
- void main()
- {
- P0M0 = 0x00;
- P0M1 = 0x00;
- P1M0 = 0x00;
- P1M1 = 0x00;
- P2M0 = 0x00;
- P2M1 = 0x00;
- P3M0 = 0x00;
- P3M1 = 0x00;
- P4M0 = 0x00;
- P4M1 = 0x00;
- P5M0 = 0x00;
- P5M1 = 0x00;
- P6M0 = 0x00;
- P6M1 = 0x00;
- P7M0 = 0x00;
- P7M1 = 0x00;
- qie_huan();
- SCON = 0x50;
- T2L = (65536 - (FOSC/4/BAUD)); //設置波特率重裝值
- T2H = (65536 - (FOSC/4/BAUD))>>8;
- AUXR = 0x14; //T2為1T模式, 并啟動定時器2
- AUXR |= 0x01; //選擇定時器2為串口1的波特率發(fā)生器
- ES = 1; //使能串口1中斷
- EA = 1;
- while(1)
- {
- if(k==0)
- {
- delay(1000);
- if(k==0)
- {
- for(i=0;i<10;i++)
- {
- SBUF='m';
- }
- while(!k);
- }
- }
- }
-
- }
- /*----------------------------
- UART 中斷服務程序
- -----------------------------*/
- void Uart() interrupt 4
- {
- if (RI)
- {
- RI = 0; //清除RI位
- P0 = SBUF; //P0顯示串口數(shù)據(jù)
- }
- if (TI)
- {
- TI = 0; //清除TI位
- }
- }
復制代碼
|