- ;1毫秒加1个,溢出大约需要50天。
- ;累加开始值,初始为0。
- MOV R0,#00H ;最低位
- MOV R1,#00H
- MOV R2,#00H
- MOV R3,#00H ;最高位
- START:
- CALL DELAY ;调用延时程序
- CLR C ;进位C清0,不接收R3溢出产生的进位
- ;--------带进位加--------
- MOV A,R0 ;R0寄存器的值送入A寄存器
- ADDC A,#01H ;A寄存器加上立即数1,溢出以后就会产生进位加入R1中。
- MOV R0,A ;A寄存器的值送回R0寄存器
- MOV A,R1 ;R1寄存器的值送入A寄存器
- ADDC A,#00H ;A寄存器不加,有进位才加
- MOV R1,A ;A寄存器的值送回R1寄存器
- MOV A,R2
- ADDC A,#00H
- MOV R2,A
- MOV A,R3
- ADDC A,#00H
- MOV R3,A
- ;--------输出到P0~P3口--------
- MOV A,R0 ;R0寄存器的值送入A寄存器
- CPL A ;由于这里的LED是低电平点亮,所以要对A寄存器进行取反
- MOV P0,A ;A寄存器的值送入P0口
- MOV A,R1
- CPL A
- MOV P1,A
- MOV A,R2
- CPL A
- MOV P2,A
- MOV A,R3
- CPL A
- MOV P3,A
- JMP START ;跳到开始处
- DELAY: ;12Mhz@STC89C52 1毫秒延时
- PUSH 30H
- PUSH 31H
- MOV 30H,#2
- MOV 31H,#234
- NEXT:
- DJNZ 31H,NEXT
- DJNZ 30H,NEXT
- POP 31H
- POP 30H
- RET
- END
复制代码
|