📄 asmpro.asm
字号:
;****************************************************************************
;=============================== ASMPRO(V10)=================================
;-------------------------------- 内存分配 ----------------------------------
;内存助记符清单...
;N (常数)
;B (位变量, bdata)
;BC (单片机控制脚)
;R (内部内存变量, data)
;RG (内部内存变量数组, data)
;RX (外部内存变量, xdata)
;RXG (外部内存变量数组, xdata)
;例子: N_XXX, B_XXX, R_XXX ...
PUBLIC RESET
;A51汇编器伪指令(PUBLIC) 为其它模块所使用
;....................... 常量、变量定义 ...........................
;N_KEEPM EQU 42D
;***** 汇编的子程序之间的过程数据传递数组 uchar par[4] *****
EXTRN DATA(PAR) ;第1字节 -- PAR
;第2字节 -- PAR+01H
;第3字节 -- PAR+02H
;第4字节 -- PAR+03H
;...
;A51汇编器伪指令(EXTRN) 列出其它模块中定义过的符号,字节和位
;***** 汇编的子程序之间的过程数据传递位组 *****************
EXTRN BIT(SYS_START) ;第一位显示最高位
;=========================== 汇编程序开始 ===================================
;****************************************************************************
CSEG AT(0003H) ;External Interrupt 0
RETI
;A51汇编器伪指令(CSEG),程序绝对段
CSEG AT(000BH) ;Timer 0
RETI
;A51汇编器伪指令(CSEG),程序绝对段
CSEG AT(0013H) ;External Interrupt 1
RETI
;A51汇编器伪指令(CSEG),程序绝对段
CSEG AT(001BH) ;Timer 1
LJMP TIME1_INT
RETI
;A51汇编器伪指令(CSEG),程序绝对段
CSEG AT(0023H) ;Serial Port
RETI
;A51汇编器伪指令(CSEG),程序绝对段
CSEG AT(002BH) ;Serial 52 CPU Timer2/T2Ex
RETI
;A51汇编器伪指令(CSEG),程序绝对段
NOP
NOP
NOP
;****** 包括外部的汇编子程序 **********************************
$INCLUDE (PT6311.ASM)
$INCLUDE (PT6311_2.ASM)
$INCLUDE (REMOTE.ASM)
$INCLUDE (M62446.ASM)
$INCLUDE (AD0.ASM)
;; $INCLUDE (MVOLDET.ASM)
;; $INCLUDE (VOLDET.ASM)
$INCLUDE (M62421.ASM)
$INCLUDE (24C01.ASM)
;A51汇编次要控制(INCLUDE 文件名)
;*************** TIME1 中断(用于看门狗与其他迅速检测的程序) *******************
USING 1 ;声明这里使用了寄存器组1
;A51汇编器伪指令(USING),通知汇编器使用那一组寄存器组
EXTRN DATA(DOG_TIME0) ;time0中断的看门狗计数数
EXTRN DATA(DOG_MAIN) ;main的看门狗计数数
EXTRN DATA(AD_IN)
EXTRN BIT(B_CLOSE_MACH) ;第一位显示最高位
;A51汇编器伪指令(EXTRN) 列出其它模块中定义过的符号,字节和位
TIME1_INT:
CLR TR1 ;T1计数中断
PUSH ACC
PUSH PSW
PUSH DPH
PUSH DPL ;保护DPTR,遥控器用到DPTR
MOV PSW, #00001000B ;使用寄存器组1
MOV A,TMOD
ANL A,#00FH
SETB ACC.4 ;重新设置T1计数器
MOV TMOD,A
MOV TL1, #25H ;TIME1=500/sec
MOV TH1, #0FAH
MOV DOG_TIME0, #50D ;恢复TIME0看门狗计数数, 0.5S
DJNZ DOG_MAIN, NOPROB ;监控MAIN主程序
POP ACC
POP ACC
MOV DPTR, #RESET ;看门狗溢出复位
PUSH DPL
PUSH DPH
RETI
NOPROB:
LCALL GET_REMOTE ;读遥控,是否有键按下
;; LCALL INPUT_DET ;MVOL_DET
POP DPL
POP DPH
POP PSW
POP ACC
SETB TR1
RETI
;*************************************************************
RESET: CLR EA
MOV PSW, #00H
LJMP 0000H
;**************************************************************
END
;A51汇编器伪指令(END) 设定源程序最后一行
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -