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

📄 a4_5_2.asm

📁 单片机汇编例程学习,大量的汇编例程
💻 ASM
字号:
;///////////////////////////////////////////
;本程序源代码由单片机培训网提供.
;单片机培训网,让更多人学习单片机更容易.
;第一网址----www.mcuedu.com
;第二网址----http://51_train.nease.net
;创办人------刘永忠
;热线电话----(0755)27529998
;email-------aa815@163.com
;两个外中断同时存在
;平时8个LED闪烁
;int0中断使8个LED做一个灯的左移右移三次
;int1中断使8个LED做两个灯的左移右移三次
;程序难易等级--------稍难
;思考如何验证INT1和INT0的中断优先级?
;如何使INT0中断变为三个灯的左移右移三次?
;2004-7-11 10:55
;///////////////////////////////////////////
led_port	equ		p0		;便于移植到不同的硬件上

org 0000h   				;主程序起始地址
ajmp start
org 03h
ajmp ext0
org 13h
ajmp ext1
start: mov ie,#10000101b  	;INT1\INT0中断使能
       mov ip,#00000100b  	;INT1中断优先
       mov tcon,#00000000b 	;INT0\INT1设置电平到触发 
       mov sp,#70h         	;设置堆栈
       mov a,#00h
       mov led_port,a
       mov a,#00h          	;使led_port口闪烁
loop:mov led_port,a              
     call delay            	;延时0.2S
     cpl a                 	;使led全亮
     jmp loop              	;重复循环
 ext0:push acc             	;将A压入堆栈暂时保存
      push psw              ;将PSW压入堆栈暂时保存
      setb rs0             	; 设置工作寄存器1
      clr rs1
      mov r3,#03           	;左右移3次
 loop1:mov a,#0ffh         	;左移初值
       clr c              	;C=1
       mov r2,#08         	;设定左移8次
 loop2:rlc a              	;含C左移8次
       mov led_port,a       ;输出至led_port口
       call delay         	;调用0.2S延时
       djnz r2,loop2      	;左移8次?
       mov r2,#07         	;设定右移7次
loop3:rrc a               	;含C起右移
      mov led_port,a        ;输出至led_port口
      call delay          	; 0.2S延时
      djnz r2,loop3       	;左移7次?
      djnz r3,loop1       	;左右移3次
      pop psw             	;
      pop acc
     reti
 ext1:push acc
      push psw
      setb rs1
      clr rs0
      mov r3,#03
 loop4:mov a,#0fch  		;左移初值       mov r2,#06  			;设定左移6次
 loop5:rl a          		; 左移一位
       mov led_port,a      	;输出至led_port口
       call delay    		;0.2S延时
       djnz r2,loop5 		;左移6次
       mov r2,#06    		;设定左移6次
 loop6:rr a         		;右移一位
       mov led_port,a       ;输出至P口
       call delay      		;延时0.2S
       djnz r2,loop6   		;左移6次
       djnz r3,loop4   		;左右移3次
       pop psw       
       pop acc
       reti
 delay:mov r5,#20 			;0.2s延时程序
  d1:  mov r6,#20
  d2:  mov r7,#248
       djnz r7,$
       djnz  r6,d2
        djnz  r5,d1
       ret
       end
 
      		
    		

⌨️ 快捷键说明

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