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

📄 file2.asm

📁 单片机学习系统附的实验源代码
💻 ASM
字号:
;软件延时实验
;现象:从1个灯开始从左到右循环,一个循环以后变成2个,然后三个....到都是8个的时候,回到
;从一个开始,依次循环
;着重演示了如何调用循环程序来完成软件延时(注意和以后定时的区别)。
;此外还涉及到了如何循环递增变量等



         beep  equ     p3.7  ;这里定义蜂鸣器   

         org 00h             ; 这是程序开始的地方,单片机开始执行
         jmp main            ; 的第一条指令就是从这里取出的
        
         org 030h            ;  这个才是真正的程序开始的地方,该地址可以变化,
                             ;  建议采用 30H开始,00H -- 30H 中间包含所有的
                             ;  中断入口地址
main:mov sp,#40h             ;  初始化 sp
         mov R0,#64
         mov R1,#01 
         mov R2,#01      
         clr c 
         clr p3.7            ;禁止蜂鸣器
  lp:   mov a,R1
         cpl a
         mov P1,a 
         lcall delay         ;开始延时250ms
         lcall delay         ; 共计延时0.5秒钟
         mov a,R1
         rlc a
         jc lp1
         mov R1,a
         djnz R0,lp
   jmp main
  
  lp1:   mov a, r1
         rl a
         mov r1,a
         djnz R0,lp
         jmp main

;   **********    该定时子程序总延时时间250ms 

delay:  push psw        ; 保护PSW寄存器
        clr    psw.3    ;
		setb psw.4      ; 重新设置寄存器组别
		mov r0,#2       ; 延时常数 
		mov r1,#250     ; 延时常数
		mov r2,#2       ; 延时常数
    dl1:djnz r0,dl1     ; 延时循环1
    	mov r0,#250     ;
    dl2:djnz r1,dl1     ; 延时循环2 
        mov r0,#240     ;
        mov r1,#248     ; 
    dl3:djnz r2,dl1     ; 这是第三个循环
		nop              ; 这个用来修正演示精度
		pop psw          ; 恢复PSW寄存器
        ret              ; 延时子程序返回

;   **********           延时程序结束   *************

     end  ;注意:有些编译系统对于程序的结束标志敏感,一定要加上

⌨️ 快捷键说明

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