網上找不到STC15W204S STC15W201S 的串口匯編程序 STC提供的范例程序也沒用 琢磨了一天才會使用P3.0P3.1串口 現在把程序分享出來用 串口助手軟件發送1 返回文本123456789
51hei截圖20210124121604.png (9.91 KB, 下載次數: 89)
下載附件
2021-1-24 12:23 上傳
51hei截圖20210124122246.png (41.72 KB, 下載次數: 74)
下載附件
2021-1-24 12:23 上傳
單片機源程序如下:
- //本示例在Keil開發環境下請選擇Intel的8058芯片型號進行編譯
- //若無特別說明,工作頻率一般為11.0592MHz
- ;#define NONE_PARITY 0 //無校驗
- ;#define ODD_PARITY 1 //奇校驗
- ;#define EVEN_PARITY 2 //偶校驗
- ;#define MARK_PARITY 3 //標記校驗
- ;#define SPACE_PARITY 4 //空白校驗
- ;#define PARITYBIT NONE_PARITY //定義校驗位
- //-----------------------------------------
- ;P0M1 DATA 0x93 ; P0M1.n,P0M0.n =00--->Standard, 01--->push-pull
- ;P0M0 DATA 0x94 ; =10--->pure input, 11--->open drain
- P1M1 DATA 0x91 ; P1M1.n,P1M0.n =00--->Standard, 01--->push-pull
- P1M0 DATA 0x92 ; =10--->pure input, 11--->open drain
- ;P2M1 DATA 0x95 ; P2M1.n,P2M0.n =00--->Standard, 01--->push-pull
- ;P2M0 DATA 0x96 ; =10--->pure input, 11--->open drain
- P3M1 DATA 0xB1 ; P3M1.n,P3M0.n =00--->Standard, 01--->push-pull
- P3M0 DATA 0xB2 ; =10--->pure input, 11--->open drain
- ;P4M1 DATA 0xB3 ; P4M1.n,P4M0.n =00--->Standard, 01--->push-pull
- ;P4M0 DATA 0xB4 ; =10--->pure input, 11--->open drain
- P5M1 DATA 0xC9 ; P5M1.n,P5M0.n =00--->Standard, 01--->push-pull
- P5M0 DATA 0xCA ; =10--->pure input, 11--->open drain
- P5 EQU 0C8H;
- ;P6M1 DATA 0xCB ; P6M1.n,P6M0.n =00--->Standard, 01--->push-pull
- ;P6M0 DATA 0xCC ; =10--->pure input, 11--->open drain
- ;P7M1 DATA 0xE1 ;
- ;P7M0 DATA 0xE2 ;
- AUXR EQU 08EH //輔助寄存器
- T2H DATA 0D6H //定時器2高8位
- T2L DATA 0D7H //定時器2低8位
- P_SW1 EQU 0A2H //外設功能切換寄存器1
- S1_S0 EQU 40H //P_SW1.6
- S1_S1 EQU 80H //P_SW1.7
- BUSY BIT 20H.0 //忙標志位
- //-----------------------------------------
- ORG 0000H
- LJMP MAIN
- ORG 0023H
- LJMP UART_ISR
- //-----------------------------------------
- ORG 0100H
- MAIN:
- CLR A
- ; MOV P0M1, A ;設置為準雙向口
- ; MOV P0M0, A
- MOV P1M1, A ;設置為準雙向口
- MOV P1M0, A
- ; MOV P2M1, A ;設置為準雙向口
- ; MOV P2M0, A
- MOV P3M1, A ;設置為準雙向口
- MOV P3M0, A
- ; MOV P4M1, A ;設置為準雙向口
- ; MOV P4M0, A
- MOV P5M1, A ;設置為準雙向口
- MOV P5M0, A
- ; MOV P6M1, A ;設置為準雙向口
- ; MOV P6M0, A
- ; MOV P7M1, A ;設置為準雙向口
- ; MOV P7M0, A
- CLR BUSY;
- CLR EA;
- MOV SP,#3FH;
-
- MOV A,P_SW1;
- ANL A,#03FH; //S1_S0=0 S1_S1=0
- MOV P_SW1,A; //(P3.0/RxD, P3.1/TxD)
- //-------------------------------
- MOV SCON,#50H ; //8位可變波特率
- ORL AUXR,#04H ;定時器2時鐘為Fosc,即1T
- ORL AUXR,#01H ;串口1選擇定時器2為波特率發生器 9600
- MOV T2L,#0E0H ;設定定時初值 9600
- MOV T2H,#0FEH ;設定定時初值
- ORL AUXR,#10H ;啟動定時器2
- SETB ES; //使能串口中斷
- SETB EA;
- SJMP $
- TXDAT:
- MOV DPTR,#TESTSTR; //發送測試字符串
- MOV R4,#9;
- LCALL TABS; 查表
- RETI
- ; SJMP $
- ;-----------------------------------------
- TESTSTR:
- DB "123456789"
- ;/*----------------------------
- ;UART 中斷服務程序
- ;----------------------------*/
- UART_ISR:
- PUSH ACC;
- PUSH PSW;
- JNB RI,CHECKTI; //檢測RI位
- CLR RI; //清除RI位
- MOV A,SBUF; //P0顯示串口數據
- CJNE A,#1,RXOUT;
- LJMP TXDAT;
- CHECKTI:
- JNB TI,ISR_EXIT; //檢測TI位
- CLR TI; //清除TI位
- CLR BUSY; //清忙標志
- ISR_EXIT:
- POP PSW;
- POP ACC;
- RXOUT:
- RETI;
- ;/*----------------------------
- ;發送串口數據
- ;----------------------------*/
- SENDDATA:
- SETB BUSY;
- MOV SBUF,A; //寫數據到UART數據寄存器
- JNB TI,$;
- CLR TI;
- RET;
- ;/*----------------------------
- ;發送字符串
- //------------------------------------------------------------------------------
- TABS:
- DDD: CLR A;
- MOVC A,@A+DPTR;
- INC DPTR;
- LCALL SENDDATA; //發送當前字符
- DJNZ R4,DDD;
- RET;
- END;
復制代碼
以上資料51hei提供下載:
15W204S串口測試程序 - 匯編.rar
(22.27 KB, 下載次數: 30)
2021-1-24 12:23 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|