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

📄 wangliang.asm

📁 一个单片机系统的驱动程序
💻 ASM
字号:
org 0000h
sjmp main

org 000bh
ljmp timer0

;main process
org 0030h
main:               
;system initialization
  mov p0,#0ffh
  mov p2,#0ffh
  mov p1,#0f0h
  
  mov tmod,#01h ;timer0 mode1,
  setb tr1
  mov th1,#0d8h   ;time:5ms
  mov tl1,#0f0h

  setb ea
  mov IE,#0ffh
 
  mov r0,#00h
  mov a,#00

  clr p3.5
 
;程序实现的功能
;K4键按下,循环点亮7段LED
;K3键按下,按计数方式点亮发光二极管

body_proc:

 ; mov a,r0
  cjne a,#55h,k3_diode

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;k4 button pressed,led_segment be lightned
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  mov p0,#10011111b
  mov p2,#10111111b   
  setb p3.5 
  lcall delay
  clr p3.5
  
  push acc 
  mov r4,#4
  mov b,#02
  mov a,#02h
a3:            ; 循环点亮七段led
  ;anl a,#0ffh 
  mov p3,a
  mul ab
  lcall delay1
  djnz r4,a3
  pop acc
  sjmp body_proc 
 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 
;k3 button pressed,led be lightned
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
k3_diode:
  cjne a,#0aah,cycling
  
  push acc 
  mov r4,#16
  mov a,#0f0h
a4:          ;按计数方式点亮发光二极管 L1-L4
  mov p1,a
  lcall delay1
  add a,#01
  djnz r4,a4
  pop acc
aa:         ;点亮L5,L6
  mov p1,#0f0h
  lcall delay1
  
  mov p0,#01111111b
  mov p2,#01111111b   
  setb p3.5 
  lcall delay1
  clr p3.5
;  sjmp body_proc    

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;  
cycling:
  sjmp body_proc 
  ret

;delay 延时函数
delay:
    mov r6,#0ffh
a1: mov r7,#0ffh
a0: djnz r7,a0
    djnz r6,a1
    ret
    
delay1:
    mov r5,#20
a2: lcall delay;    
    djnz r5,a2
    ret

;定时器1中断处理函数
;timer0 interrupt service route  
timer0:
   push acc 
   mov th1,#0d8h
   mov tl1,#0f0h
   clr tr1

   mov r1,#80h      ;软件延时去按键抖动
a8:mov r2,#80h
a7:djnz r2,a7
   djnz r1,a8
   setb tr1
      
   mov a,p1
   push acc
   anl a,#80h
   cjne a,#80h,a5 

   pop acc            ;k3 button has been pressed down
   mov r0,#0aah
   sjmp retu

a5:pop acc 
   cjne a,#40h,a6 
   mov r0,#55h        ;k4 button has been pressed down
   sjmp retu

a6:mov r0,#00  ;other buttons or no button has pressed down
retu:
   pop acc

   mov a,r0
   reti
   
   end

⌨️ 快捷键说明

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