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

📄 slave2.lst

📁 关于51单片机学习的基本样例程序
💻 LST
字号:
A51 MACRO ASSEMBLER  SLAVE2                                                               06/23/2007 10:57:34 PAGE     1


MACRO ASSEMBLER A51 V7.10
OBJECT MODULE PLACED IN slave2.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE slave2.asm SET(SMALL) DEBUG EP

LOC  OBJ            LINE     SOURCE

                       1     ;----------------------------------
                       2     ;                   单片机与单片机通信实例(从机2)
                       3     ;功能:通过串口接收主机的控制信号,然后通过数模转换输出模拟信号
                       4     ;-----------------------------------
0000                   5     ORG 0000H
0000 8023              6     JMP START                 ; 程序开始
0023                   7     ORG 0023H                 
0023 8027              8     JMP Serial_RX_ISR           ; 串口中断向量
                       9     
0025                  10     START:    
0025 758160           11           MOV SP,#60H         ; 将堆栈位置设为60H
0028 112C             12           CALL Init             ; 进行串口及相关寄存器的初始化
                      13            
002A                  14     MainLoop:
                      15     ;-----------------------
                      16     ; 主循环:
                      17     ;-----------------------
002A 80FE             18           JMP MainLoop           
                      19     
002C                  20     Init:
                      21     ;---------------------------------
                      22     ;     程序初始化,包括串口、定时器T1、中断的初始化
                      23     ;---------------------------------
002C 7598F0           24           MOV SCON,#11110000B    ; 串口控制寄存器初始化
002F 438780           25           ORL PCON,#10000000B    ; 把SMOD位置1
0032 D2AF             26           SETB EA                 ; 中断允许总控制位使能
0034 D2AC             27           SETB ES                 ; 串口中断使能
0036 D2BC             28           SETB PS                 ; 把串口中断设为高优先级
0038 113B             29           CALL Timer1_Init         ; 进行定时器T1的初始化
003A 22               30           RET
                      31     
003B                  32     Timer1_Init:
                      33     ;-------------------------
                      34     ;     定时器T1作为串口的波特率发生器
                      35     ;     (2^SMOD)*fosc/32*12*(256-th1)=57600
                      36     ;-------------------------
003B 438920           37           ORL TMOD,#00100000B   ; 定时器T1工作在方式2
003E 438840           38           ORL TCON,#01000000B    ; 定时器T1使能
0041 758DFF           39           MOV TH1,#0FFH          ; 设定定时器T1的初始值
0044 22               40           RET
                      41     
0045                  42     DA_Operation:
                      43     ;-------------------------
                      44     ;     DAC0832的操作
                      45     ;     电压控制值存放在ACC中
                      46     ;-------------------------
0045 C2B6             47           CLR P3.6                   ; 将WR设为低
0047 90EFFF           48           MOV DPTR,#0EFFFH        ; 选中片选信号
004A F0               49           MOVX @DPTR,A           ; 输出控制电压
004B 22               50           RET
004C                  51     Serial_RX_ISR:
                      52     ;-----------------------------------
                      53     ;     串口接收中断服务程序,需要在程序开始时在2FH处写入缓存区首地址
                      54     ;-----------------------------------
004C C0D0             55            PUSH PSW                   ; 程序状态字压栈
004E C001             56            PUSH 1                      ; R1压栈
0050 C002             57            PUSH 2                      ; R2压栈
0052 A299             58     MOV C,TI
A51 MACRO ASSEMBLER  SLAVE2                                                               06/23/2007 10:57:34 PAGE     2

0054 C299             59            CLR TI
0056 4015             60     JC OUT_ISR
                      61     
0058 E599             62            MOV A,SBUF 
005A B40210           63            CJNE A,#02,Out_ISR          ; 判断是否为从机2的命令帧
005D C29D             64            CLR SM2                    ; 把SM2清零
005F C2AC             65            CLR ES                      ; 禁止串口中断
0061 C298             66            CLR RI                      ; 软件清除串口接收中断标志
0063 00               67            NOP
0064                  68     Serial_RX_WAIT:                    ; 等待下一个字节数据的接收     
0064 3098FD           69            JNB RI,Serial_RX_WAIT
0067 E599             70            MOV A,SBUF                 ; 将接收到的数据写入A
0069 1145             71            CALL DA_Operation            ; 模拟输出
006B D29D             72            SETB SM2                    ; SM2置1
006D                  73     Out_ISR:  
006D C298             74            CLR RI                      ; 软件清除串口接收中断标志位
006F D002             75            POP 2                       ; R2 出栈
0071 D001             76            POP 1                       ; R1 出栈
0073 D0D0             77            POP PSW                    ; 程序状态字出栈
0075 32               78            RETI       
                      79                     
                      80            END
A51 MACRO ASSEMBLER  SLAVE2                                                               06/23/2007 10:57:34 PAGE     3

SYMBOL TABLE LISTING
------ ----- -------


N A M E             T Y P E  V A L U E   ATTRIBUTES

DA_OPERATION . . .  C ADDR   0045H   A   
EA . . . . . . . .  B ADDR   00A8H.7 A   
ES . . . . . . . .  B ADDR   00A8H.4 A   
INIT . . . . . . .  C ADDR   002CH   A   
MAINLOOP . . . . .  C ADDR   002AH   A   
OUT_ISR. . . . . .  C ADDR   006DH   A   
P3 . . . . . . . .  D ADDR   00B0H   A   
PCON . . . . . . .  D ADDR   0087H   A   
PS . . . . . . . .  B ADDR   00B8H.4 A   
PSW. . . . . . . .  D ADDR   00D0H   A   
RI . . . . . . . .  B ADDR   0098H.0 A   
SBUF . . . . . . .  D ADDR   0099H   A   
SCON . . . . . . .  D ADDR   0098H   A   
SERIAL_RX_ISR. . .  C ADDR   004CH   A   
SERIAL_RX_WAIT . .  C ADDR   0064H   A   
SM2. . . . . . . .  B ADDR   0098H.5 A   
SP . . . . . . . .  D ADDR   0081H   A   
START. . . . . . .  C ADDR   0025H   A   
TCON . . . . . . .  D ADDR   0088H   A   
TH1. . . . . . . .  D ADDR   008DH   A   
TI . . . . . . . .  B ADDR   0098H.1 A   
TIMER1_INIT. . . .  C ADDR   003BH   A   
TMOD . . . . . . .  D ADDR   0089H   A   


REGISTER BANK(S) USED: 0 

ASSEMBLY COMPLETE.  0 WARNING(S), 0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -