?? irdacom.lst
字號:
A51 MACRO ASSEMBLER IRDACOM 01/17/2005 16:33:28 PAGE 1
MACRO ASSEMBLER A51 V7.02a
OBJECT MODULE PLACED IN IrDACom.OBJ
ASSEMBLER INVOKED BY: D:\Keil\C51\BIN\A51.EXE IrDACom.asm SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
1 ; **************************************************************
2 ; IrDA Data Communication Test Procedure
3 ; **************************************************************
4 ; PCON EQU 87H
5 ; 定義端口
0090 6 DOUT BIT P1.0 ; 數據輸出
0091 7 DIN BIT P1.1 ; 數據輸入
0092 8 SCLK BIT P1.2 ; 串行時鐘
0093 9 CS BIT P1.3 ; 片選信號-低電平有效
00B2 10 IRQ BIT P3.2 ; 紅外通信中斷信號,在程序中輪詢
11 ; RAM地址分配
0010 12 TX1 EQU 10H ; 發送寄存器
0011 13 TX2 EQU 11H ; 發送寄存器
0012 14 RX1 EQU 12H ; 接收寄存器
0013 15 RX2 EQU 13H ; 接收寄存器
16 ; **************************************************************
0000 17 ORG 00H
0000 18 BEGIN:
0000 758170 19 MOV SP, #70H ; 堆棧初始化
0003 C292 20 CLR SCLK ; 清空時鐘線信號
21 ; 初始化89C52的串口: 紅外方式工作在9600波特率
0005 758920 22 MOV TMOD, #20H ; T1的波特率
0008 758DFD 23 MOV TH1, #253 ; 重裝數值
000B 759850 24 MOV SCON, #50H
000E 758780 25 MOV PCON, #80H ; 波特率加倍
0011 758840 26 MOV TCON, #40H ; 計數器開始工作
27 ; 初始化MAX3100串口--紅外方式工作在9600波特率
0014 7510E4 28 MOV TX1, #0E4H
0017 7511CA 29 MOV TX2, #0CAH ; 9600波特率,兩個停止位
001A 113D 30 CALL UTLK ; 串口寫
31
32 ; ************************* 主程序循環 ***************************
001C 33 LOOP:
001C 30B205 34 JNB IRQ, URCV ; 判斷有數據
001F 35 NRECV:
001F 109810 36 JBC RI, RCV51
0022 80F8 37 JMP LOOP
38 ; 從MAX3100接收,從8951發送
0024 39 URCV:
0024 751000 40 MOV TX1, #0 ; 讀數據
0027 751100 41 MOV TX2, #0
002A 113D 42 CALL UTLK ; 將數據發送到RX
002C E513 43 MOV A, RX2 ; 將數據送入累加器
002E F599 44 MOV SBUF, A ; 發送RS-232信號
0030 80EA 45 JMP LOOP
46 ; 從MAX3100發送,從8951接收
0032 47 RCV51:
0032 E599 48 MOV A, SBUF ; 從8951獲得數據
0034 751080 49 MOV TX1, #80H
0037 F511 50 MOV TX2, A ; 準備紅外數據
0039 113D 51 CALL UTLK ; 從紅外端口發送數據
003B 80DF 52 JMP LOOP
53
54 ; **************************************************************
55 ; 子程序
56 ; 完成16位數據的收發
57 ; 從TX1、TX2發送16位比特;從RX1、RX2接收16位比特
003D 58 UTLK:
A51 MACRO ASSEMBLER IRDACOM 01/17/2005 16:33:28 PAGE 2
003D C293 59 CLR CS ; 片選工作
003F E510 60 MOV A, TX1
0041 114E 61 CALL BYT8 ; 發送
0043 F512 62 MOV RX1, A ; 從RX1獲得數據
0045 E511 63 MOV A, TX2 ; 獲得高位字節
0047 114E 64 CALL BYT8 ; 發送
0049 F513 65 MOV RX2, A ; 從RX2獲得數據
004B D293 66 SETB CS ; 關閉片選
004D 22 67 RET
68
69 ; **************************************************************
70 ; 字節的移位
004E 71 BYT8:
004E 7C08 72 MOV R4, #8 ; 8位數據
0050 D291 73 SETB DIN
0052 74 B8LP:
0052 33 75 RLC A ; 載入高位字節
0053 9290 76 MOV DOUT, C ; 輸出
0055 D292 77 SETB SCLK ; 時鐘高電平
0057 A291 78 MOV C, DIN ; 獲得數據
0059 C292 79 CLR SCLK ; 時鐘低電平
005B 92E0 80 MOV ACC.0, C ; 向ACC中放入第一個bit
005D DCF3 81 DJNZ R4, B8LP ; 循環8bit
005F 22 82 RET
83 ; 代碼結束
84 END
A51 MACRO ASSEMBLER IRDACOM 01/17/2005 16:33:28 PAGE 3
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES
ACC. . . . . . . . D ADDR 00E0H A
B8LP . . . . . . . C ADDR 0052H A
BEGIN. . . . . . . C ADDR 0000H A
BYT8 . . . . . . . C ADDR 004EH A
CS . . . . . . . . B ADDR 0090H.3 A
DIN. . . . . . . . B ADDR 0090H.1 A
DOUT . . . . . . . B ADDR 0090H.0 A
IRQ. . . . . . . . B ADDR 00B0H.2 A
LOOP . . . . . . . C ADDR 001CH A
NRECV. . . . . . . C ADDR 001FH A
P1 . . . . . . . . D ADDR 0090H A
P3 . . . . . . . . D ADDR 00B0H A
PCON . . . . . . . D ADDR 0087H A
RCV51. . . . . . . C ADDR 0032H A
RI . . . . . . . . B ADDR 0098H.0 A
RX1. . . . . . . . N NUMB 0012H A
RX2. . . . . . . . N NUMB 0013H A
SBUF . . . . . . . D ADDR 0099H A
SCLK . . . . . . . B ADDR 0090H.2 A
SCON . . . . . . . D ADDR 0098H A
SP . . . . . . . . D ADDR 0081H A
TCON . . . . . . . D ADDR 0088H A
TH1. . . . . . . . D ADDR 008DH A
TMOD . . . . . . . D ADDR 0089H A
TX1. . . . . . . . N NUMB 0010H A
TX2. . . . . . . . N NUMB 0011H A
URCV . . . . . . . C ADDR 0024H A
UTLK . . . . . . . C ADDR 003DH A
REGISTER BANK(S) USED: 0
ASSEMBLY COMPLETE. 0 WARNING(S), 0 ERROR(S)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -