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

📄 a4_5_1.asm

📁 单片机汇编例程学习,大量的汇编例程
💻 ASM
字号:
;///////////////////////////////////////////
;本程序源代码由单片机培训网提供.
;单片机培训网,让更多人学习单片机更容易.
;第一网址----www.mcuedu.com
;第二网址----http://51_train.nease.net
;创办人------刘永忠
;热线电话----(0755)27529998
;email-------aa815@163.com
;主程序将led端口的8个LED作左移右移,中断时使8个LED闪烁5次
;程序难易等级--------稍难
;///////////////////////////////////////////
led_port	equ		p0	;便于移植到不同的硬件上
		org	0000h       ;起始地址
		jmp	main        ;跳到主程序main
		org 0003h       ;int0中断子程序起始地址
		jmp ext0        ;中断子程序
		org	0030h
main:
    mov ie,#81h         ;int0中断使能
    mov ip,#01h         ;int0中断优先
    mov tcon,#00h       ;int0为电平触发
    mov sp,#70h         ;设定堆栈指针
loop:
    mov a,#0ffh         ;左移初值
    clr c
    mov r2,#08h         ;设定左移八次
loop1:
    rlc a               ;含C左移一位
    mov led_port,a      ;输出至led端口
    call    delay       ;延时0.2秒
    djnz    r2,loop1    ;左移八次?
    mov r2,#07h         ;设定右移七次
loop2:
    rrc a               ;含C右移一位
    mov led_port,a      ;输出至led端口
    call    delay       ;延时0.2秒
    djnz    r2,loop2    ;右移七次?
    jmp loop            ;重复
    
ext0:
    push    acc         ;将累加器的值压入堆栈保存
    push    psw         ;将PSW的值压入堆栈保存
    setb    rs0         ;设定工作寄存器组1
    clr     rs1         ;
    mov     a,#00h      ;为使LED端口全亮
    mov     r2,#10      ;闪烁五次(亮灭十次)
loop3:
    mov     led_port,a  ;将A输出    call    delay       ;延时0.2秒
    cpl     a           ;将A的值反相
    djnz    r2,loop3    ;闪烁五次(亮灭十次)?
    pop     psw         ;从堆栈取回PSW的值
    pop     acc         ;从堆栈取回ACC的值
    reti                ;返回主程序

delay:
    mov     r5,#20      ;0.2秒
d1:
    mov     r6,#20      ;10毫秒    
d2:
    mov     r7,#248     ;0.5毫秒
    djnz    r7,$
    djnz    r6,d2
    djnz    r5,d1
    ret
    end
            
       
    
            
    		

⌨️ 快捷键说明

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