⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 irdacom.lst

📁 用C51制作的红外通讯装置
💻 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 + -