單片機(jī)232串口發(fā)送字符到電腦。但是無法發(fā)送00這個字符。請問有什么辦法解決?急求幫助
K1 EQU P1.4 ; 按鍵端口 ; 變量定義 KEY_S EQU 50H ; 當(dāng)前的按鍵狀態(tài) KEY_V EQU 51H ; 上次的按鍵狀態(tài)
ORG 0000H LJMP MAIN
MAIN: MOV TMOD,#20H ; 定時器1工作于8位自動重載模式,用于產(chǎn)生波特率 MOV TH1,#0FDH MOV TL1,#0FDH ; 波特率9600
MOV SCON,#50H ; 設(shè)定串行口工作方式 ANL PCON,#0EFH ; 波特率不倍增
SETB TR1 ; 啟動定時器1 MOV IE,#0 ; 禁止任何中斷
MOV KEY_V,#01H ;
MAIN_RX: JNB RI,MAIN_KEY ; 是否有數(shù)據(jù)到來 CLR RI MOV A,SBUF ; 暫存接收到的數(shù)據(jù) MOV P0,A ; 數(shù)據(jù)傳送到P0口 LCALL SEND_CHAR ; 回傳接收到的數(shù)據(jù)
MAIN_KEY: LCALL SCAN_KEY ; 掃描按鍵 JZ MAIN_RX LCALL DELAY_15MS ; 延時去抖動 LCALL SCAN_KEY JZ MAIN_RX MOV KEY_V,KEY_S ; 保存鍵值 LCALL PROC_KEY ; 鍵處理 SJMP MAIN_RX ;=============================================================================== SCAN_KEY: ; 掃描按鍵, (在此實(shí)例中僅掃描按鍵K1) ; 傳入?yún)?shù): 無 ; 返回值: 無 CLR A MOV C,K1 MOV ACC.0, C MOV KEY_S,A XRL A,KEY_V ; 檢查按鍵狀態(tài)是否改變 RET ;=============================================================================== PROC_KEY: ; 按鍵處理子程序 --- 發(fā)送字符串到PC ; 傳入?yún)?shù): KEY_V --- 按鍵值 ; 返回值: 無 JB K1,END_PROC_KEY ; K1未按下時,直接返回 MOV DPTR,#TAB_WWW ; 字串表格地址
SEND_STRING: CLR A MOVC A,@A+DPTR JZ END_PROC_KEY ACALL SEND_CHAR INC DPTR ; 下一字符 SJMP SEND_STRING END_PROC_KEY: RET
;=============================================================================== SEND_CHAR: ; 傳送一個字符 ; 傳入?yún)?shù): ACC(要發(fā)送的數(shù)據(jù)) ; 返回值: 無 MOV SBUF,A JNB TI,$ ; 等特?cái)?shù)據(jù)傳送 CLR TI ; 清除數(shù)據(jù)傳送標(biāo)志 RET ;=============================================================================== ; 掃描按鍵, (在此實(shí)例中僅掃描按鍵K1) ; 傳入?yún)?shù): 無 ; 返回值: 無 DELAY_15MS: MOV R7,#15 DELAY15MS_1: MOV R6,#0E8H DELAY15MS_2: NOP NOP DJNZ R6,DELAY15MS_2 DJNZ R7,DELAY15MS_1 RET
TAB_WWW: DB 80H,78H,78H,80H,00H,80H,00H
END
|