📄 chuanganqi.asm
字号:
$NOMOD51
$INCLUDE(REG932.INC)
PAGE_SIZE EQU 3FH
; IAP_Lite相关寄存器定义
FMADRH DATA 0E7H
FMADRL DATA 0E6H
FMCON DATA 0E4H
FMDATA DATA 0E5H
; 定义FLASH控制命令字
LOAD EQU 00H ; 加载数据
PROG EQU 48H ; 编程
ERS_PROG EQU 68H ; 擦除编程
ERS_S EQU 71H ; 擦除扇区
ERS_P EQU 70H ; 擦除页
TACCH EQU 31H ;第1次计数高8位
TACCL EQU 32H ;第1次计数低8位
TEMP EQU 33H
EXPB EQU 34H
ACCBHI EQU 35H
ACCBLO EQU 36H
EXPA EQU 37H
ACCAHI EQU 38H
ACCALO EQU 39H
TIMEH EQU 3AH
TIMEL EQU 3BH
FLAG EQU 3CH ;EEPROM判断标致位
TACCH1 EQU 3DH ;第2次(或以后)计数高8位
TACCL1 EQU 3EH ;第2次(或以后)计数低8位
FLAG1 EQU 40H ;0位为:第1次计数标志位,是第1次计数清0;是第2次(或以后)计数置1
TACCH2 EQU 41H ;EEPROM里面保存的脉冲数值
TACCL2 EQU 42H ;EEPROM里面保存的脉冲数值
TEMP2 EQU 43H
ORG 0000H
AJMP MAIN
MAIN: MOV SP,#68H
ACALL DELAY2
MOV P1M1,#40H
MOV P1M2,#00H
MOV P0M1,#30H
MOV P0M2,#30H
SETB P0.4
SETB P0.5
LOOP: NOP
JB P1.2,LOOP1 ;判断P1.2是高还是低。高,转LOOP1;低,顺序执行下一条
ACALL DELAY1
JNB P1.2,LOOP5
AJMP LOOP ;2秒延时后,再判断P1.2是高还是低。低,转LOOP5;高,回LOOP
LOOP5: ACALL DELAY1
JNB P1.2,LOOP6
AJMP LOOP ;2秒延时后,再判断P1.2是高还是低。低,转LOOP6;高,回LOOP
LOOP6: ACALL DELAY1
JNB P1.2,LOOP7
AJMP LOOP ;2秒延时后,再判断P1.2是高还是低。低,转LOOP7;高,回LOOP
LOOP7: CLR P0.4
CLR P0.5
AJMP LOOP
LOOP1: ACALL DELAY1
JB P1.2,LOOP2
AJMP LOOP ;2秒延时后,再判断P1.2是高还是低。高,转LOOP2;低,回LOOP
LOOP2: ACALL DELAY1
JB P1.2,LOOP3
AJMP LOOP ;2秒延时后,再判断P1.2是高还是低。高,转LOOP3;低,回LOOP
LOOP3: ACALL DELAY1
JB P1.2,LOOP4
AJMP LOOP ;2秒延时后,再判断P1.2是高还是低。高,转LOOP4;低,回LOOP
LOOP4: SETB P0.4
SETB P0.5
AJMP LOOP
DELAY: MOV R6,#0FFH
DL1: MOV R5,#0FFH
DJNZ R5,$
DJNZ R6,DL1
RET
DELAY1: MOV R4,#30H ;2秒延时程序
WE: ACALL DELAY
DJNZ R4,WE
RET
DELAY2: MOV R6,#0FFH
DL2: MOV R5,#80H
DJNZ R5,$
DJNZ R6,DL2
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -