📄 rs232.lst
字号:
页 1
07-08-06
14:37:33
伟福汇编器 V5.00 Copyright (c) 1989, 2001 by CHY
地址 机器码 源程序
;这是一个使用单片机串行通信口通过RS232总线与PC进行通信的测试程序,无需扩展.
;可将DB9的第2和第3脚短路,进行自收自发测试.
;采用串行中断接收,速率:9600,通信方式3,晶振使用:osc=11.0592MHz
;使用SW1-SW6键盘发送文本数字1-6,数码管显示接收的ASCII数据
BUFF_KEY EQU 21H ;键盘键
BUFF_LED1 EQU 22H ;数码管显示缓存
BUFF_LED2 EQU 23H
BUFF_LED3 EQU 24H
BUFF_LED4 EQU 25H
BUFF_LED5 EQU 26H
BUFF_LED6 EQU 27H
BUFF_LED_LP EQU 2BH ;T0键盘显示扫描缓存
F_BEEP BIT 01H
LED_PORT EQU P0
DIG_PORT EQU P2
KEY_PORT EQU P2
SW1 BIT P2.7
SW2 BIT P2.6
SW3 BIT P2.5
SW4 BIT P2.4
SW5 BIT P2.3
SW6 BIT P2.2
KEY BIT P3.3
BEEP BIT P2.0
org 000h
0000 020100 JMP main
ORG 00BH
000B 0201D2 JMP T0_INT
org 0023h
0023 0201AE ljmp rx_int
ORG 100H
0100 758140 main:MOV SP ,#40H
0103 787F MOV R0,#7FH
0105 7400 CLR_RAM:MOV A,#00H
0107 F6 MOV @R0,A
0108 D8FB DJNZ R0,CLR_RAM
010A 758140 mov sp,#40h
010D 75A800 MOV IE,#00H
0110 758921 mov tmod,#21h
0113 759850 mov scon,#50h
0116 758DFD mov TH1,#0FDH ;sn=9600b/s-n-1
0119 758BFD MOV TL1,#0FDH
011C 758CF4 MOV TH0,#244 ;T0=3MS
011F 758A48 MOV TL0,#72
0122 D28E SETB TR1
0124 D2AC SETB ES
E:\单片机\SMT-MCU\S51E文档资料\ASM程序\RS232.ASM
页 2
07-08-06
14:37:33
伟福汇编器 V5.00 Copyright (c) 1989, 2001 by CHY
地址 机器码 源程序
0126 D28C SETB TR0
0128 D2A9 SETB ET0
012A D2AF SETB EA
012C 85FF90 MOV P1,0FFH ;INIT
012F 85FFA0 MOV P2,0FFH
0132 85FF80 MOV P0,0FFH
0135 85FFB0 MOV P3,0FFH
0138 20B3FD WAIT_KEY:JB KEY,$ ;等候按键!
013B 30A711 JNB SW1,SW1_OK
013E 30A61B JNB SW2,SW2_OK
0141 30A525 JNB SW3,SW3_OK
0144 30A42F JNB SW4,SW4_OK
0147 30A339 JNB SW5,SW5_OK
014A 30A243 JNB SW6,SW6_OK
014D 80E9 JMP WAIT_KEY
014F 759931 SW1_OK: MOV SBUF,#'1' ;通常使用加单引号,表示文本,'A'
0152 3099FD JNB TI,$
0155 C299 CLR TI
0157 12019D LCALL DEL
015A 80DC JMP WAIT_KEY
015C 759932 SW2_OK: MOV SBUF,#'2'
015F 3099FD JNB TI,$
0162 C299 CLR TI
0164 12019D LCALL DEL
0167 80CF JMP WAIT_KEY
0169 759933 SW3_OK: MOV SBUF,#'3'
016C 3099FD JNB TI,$
016F C299 CLR TI
0171 12019D LCALL DEL
0174 80C2 JMP WAIT_KEY
0176 759934 SW4_OK: MOV SBUF,#'4'
0179 3099FD JNB TI,$
017C C299 CLR TI
017E 12019D LCALL DEL
0181 80B5 JMP WAIT_KEY
0183 759935 SW5_OK: MOV SBUF,#'5'
0186 3099FD JNB TI,$
0189 C299 CLR TI
018B 12019D LCALL DEL
018E 80A8 JMP WAIT_KEY
0190 759936 SW6_OK: MOV SBUF,#'6'
0193 3099FD JNB TI,$
0196 C299 CLR TI
0198 12019D LCALL DEL
019B 809B JMP WAIT_KEY
019D D201 DEL: SETB F_BEEP ;起动蜂鸣器
E:\单片机\SMT-MCU\S51E文档资料\ASM程序\RS232.ASM
页 3
07-08-06
14:37:33
伟福汇编器 V5.00 Copyright (c) 1989, 2001 by CHY
地址 机器码 源程序
019F 7D02 MOV R5,#02 ;为演示方便,人为插入的延时
01A1 7EC8 DEL01: MOV R6,#200
01A3 7FC8 DEL02: MOV R7,#200
01A5 DFFE DJNZ R7,$
01A7 DEFA DJNZ R6,DEL02
01A9 DDF6 DJNZ R5,DEL01
01AB C201 CLR F_BEEP
01AD 22 RET
;----------- SERIAL COMMUNICATION INTRRUPT 串行接收中断--------------------
01AE C0E0 RX_INT: PUSH ACC
01B0 C0D0 PUSH PSW
01B2 309818 JNB RI,END_RX
01B5 C298 CLR RI
01B7 E599 MOV A,SBUF ;读接收字节
01B9 C3 CLR C
01BA 9430 SUBB A,#30H ;转换文本ASCii为数字
01BC 852322 MOV BUFF_LED1,BUFF_LED2 ;循环移动显示
01BF 852423 MOV BUFF_LED2,BUFF_LED3
01C2 852524 MOV BUFF_LED3,BUFF_LED4
01C5 852625 MOV BUFF_LED4,BUFF_LED5
01C8 852726 MOV BUFF_LED5,BUFF_LED6
01CB F527 MOV BUFF_LED6,A
01CD D0D0 END_RX: POP PSW
01CF D0E0 POP ACC
01D1 32 RETI
;------------- T0 INTRRUPT 数码管扫描定时中断---------------------------
01D2 C0E0 T0_INT: PUSH ACC
01D4 C0D0 PUSH PSW
01D6 758CF4 MOV TH0,#244 ;T0=3MS
01D9 758A48 MOV TL0,#72
01DC 052B INC BUFF_LED_LP
01DE E52B MOV A,BUFF_LED_LP
01E0 B40703 CJNE A,#07,CONT_SCAN
01E3 752B01 MOV BUFF_LED_LP,#01H
01E6 E52B CONT_SCAN:MOV A,BUFF_LED_LP
01E8 14 DEC A
01E9 23 RL A
01EA 9001EE MOV DPTR,#TAB_SCAN
01ED 73 JMP @A+DPTR
01EE 21FA TAB_SCAN: AJMP SCAN_L1
01F0 4102 AJMP SCAN_L2
01F2 410A AJMP SCAN_L3
01F4 4112 AJMP SCAN_L4
01F6 411A AJMP SCAN_L5
01F8 4122 AJMP SCAN_L6
E:\单片机\SMT-MCU\S51E文档资料\ASM程序\RS232.ASM
页 4
07-08-06
14:37:33
伟福汇编器 V5.00 Copyright (c) 1989, 2001 by CHY
地址 机器码 源程序
01FA 75A07F SCAN_L1: MOV DIG_PORT,#01111111B
01FD E522 MOV A,BUFF_LED1
01FF 020227 JMP END_SCAN
0202 75A0BF SCAN_L2: MOV DIG_PORT,#10111111B
0205 E523 MOV A,BUFF_LED2
0207 020227 JMP END_SCAN
020A 75A0DF SCAN_L3: MOV DIG_PORT,#11011111B
020D E524 MOV A,BUFF_LED3
020F 020227 JMP END_SCAN
0212 75A0EF SCAN_L4: MOV DIG_PORT,#11101111B
0215 E525 MOV A,BUFF_LED4
0217 020227 JMP END_SCAN
021A 75A0F7 SCAN_L5: MOV DIG_PORT,#11110111B
021D E526 MOV A,BUFF_LED5
021F 020227 JMP END_SCAN
0222 75A0FB SCAN_L6: MOV DIG_PORT,#11111011B
0225 E527 MOV A,BUFF_LED6
0227 900237 END_SCAN: MOV DPTR,#TAB_LED
022A 93 MOVC A,@A+DPTR
022B F580 MOV LED_PORT,A
022D 300102 JNB F_BEEP,EXIT_T0
0230 C2A0 CLR BEEP
0232 D0D0 EXIT_T0: POP PSW
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -