作者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