作者pig19910320 (PIG_boi)
看板ASM
標題[問題] 8051與超級終端機 uart_rs232
時間Mon Dec 6 10:44:15 2010
利用RS232讓PC 超級終端機 與 8051做數字傳輸
4*4小鍵盤 經由74922接到P1 74922的DA腳位接到P3.2
或是能寫一個C++ form在PC端傳送資料給8051的程式
; Memory Allocation
UART_BUSY EQU 00h
;Pin Assignment
LED_PORT EQU P0
KEYPAD_PORT EQU P1
KEYPAD_RDY EQU P3.2
;
PROG EQU 0000h
ORG PROG+0000h
SJMP START
;Interrupt Vector Table
ORG PROG+0003h
LCALL INT0_ISR
RETI
ORG PROG+000Bh
LCALL T0_ISR
RETI
ORG PROG+0013h
LCALL INT1_ISR
RETI
ORG PROG+001Bh
LCALL T1_ISR
RETI
ORG PROG+0023h
LCALL UART_ISR
RETI
;
ORG PROG+0030h
START:
CLR UART_BUSY
MOV TMOD,
#00100001b ; Timer1 in Mode 2, Timer0 in Mode 1
MOV TH1, #0FDh ; Baud Rate = 9600 bps at 11.0592MHz
MOV SCON,
#01010000b ; UART in Mode 1
SETB ES ; Enable UART Interrupt
SETB EA ; Enable Interrupt
SETB TR1 ; Start Timer 1
GET_BYTE:
LCALL GET_KEY
SWAP A
MOV B,A
LCALL GET_KEY
ORL A,B
LCALL UART_PUTC
SJMP GET_BYTE
GET_KEY:
WAIT_KEY:
JNB KEYPAD_RDY,WAIT_KEY
MOV A,KEYPAD_PORT
ANL A,#0Fh
WAIT_KEY_RELEASE:
JB KEYPAD_RDY,WAIT_KEY_RELEASE
RET
;
INT0_ISR:
RET
T0_ISR:
RET
INT1_ISR:
RET
T1_ISR:
RET
;
UART_ISR:
JB RI,RECEIVED
TRANSMITTED:
CLR UART_BUSY
CLR TI
RET
RECEIVED:
MOV KEYPAD_PORT,SBUF
CLR RI
RET
;
UART_PUTC:
JB UART_BUSY,UART_PUTC
SETB UART_BUSY
MOV SBUF,A
RET
END
請問哪裡需要做修改呢?????
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.171.240.151
※ 編輯: pig19910320 來自: 218.171.240.151 (12/06 23:58)
1F:推 windheart630:請問一下你有考慮到要用ASCII傳輸嗎 還有有點不懂 12/11 01:25
2F:→ windheart630:RECEIVED那部份的用意 12/11 01:26
3F:→ windheart630:或是你就只要要傳ASCII = 1,2...,16這樣? 12/11 01:28
4F:→ pig19910320:我是剛在學 UART是傳ASCII 那如何把ASCII修改成 12/12 15:00
5F:→ pig19910320:我想數字 16位元沒關係 希望能先有數字就好 12/12 15:01
6F:→ pig19910320:可是這些程式碼 都好像失敗 PC端連亂碼都沒顯示 12/12 15:02
7F:→ kikiqqp:終端機速度設定多少 12/14 19:09
8F:→ pig19910320:你好 一樣設9600 12/15 21:55