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

📄 test_disp.asm

📁 51内核单片机实验程序
💻 ASM
字号:
;----------------------------------------------
;             用汇编编制的显示程序
;                  2007.8.29
                
        spk       BIT   P1.0      ;蜂鸣器
	k1        BIT   P1.1      ;k1
	k2        BIT   P2.4      ;k2
        
        led_di    bit   p1.7      ;74ls164 数据输入
        led_clk   bit   p3.3      ;74ls164 时钟输入

        disp_s    EQU  1000h    ;十位地址
        disp_g    EQU  2000h    ;个位地址
        clr_led   equ  4000h    ;74ls164(清零)       
         

        numb_s    equ  30h     ;个位数据
        numb_g    equ  31h     ;十位数据
        led       equ  32h     ;led要显示的数

	numb      equ  33h     ;

          org    0000h       ;复位入口
          ljmp   main        ;跳到主程序

          org    0100h

delay_0: ;延时子程序
          mov    r6,#02h
 ;del_22:  djnz   r6,del_22
 	  ret

delay_1:  ;延时子程序
          mov    r5,#00h  ;
   del_2: mov    r6,#00h
   del_1: djnz   r6,del_1
          djnz   r5,del_2
 	  ret
delay_2:;;延时子程序
          lcall   delay_1    
          lcall   delay_1    
          lcall   delay_1    
          lcall   delay_1    
          lcall   delay_1    
          lcall   delay_1 
          lcall   delay_1    
          lcall   delay_1    
          lcall   delay_1    
          lcall   delay_1    
          lcall   delay_1    
          lcall   delay_1    
          ret  
sprak_on:              ;蜂鸣器发声
          clr     spk;
          lcall   delay_1
 	  setb    spk
	  ret
clr_led_d:
          mov     dptr,#clr_led;
	  movx    a,@dptr
	  ret

disp_led:  ;led=?
          ;lcall  clr_led_d;清零
          mov    a,led;
          mov    numb,#08h
	  clr    led_clk

c_disp_led:
	      
	  rlc    a
	  mov    led_di,c
          lcall  delay_0;
   
	  setb   led_clk;
	  lcall  delay_0;
	  clr    led_clk;
          lcall  delay_0;
 
	  djnz   numb,c_disp_led
          ret
          
loop_led:
          mov    r7,#80h
loop_led1:
          mov    led,r7
          lcall  disp_led;显示
	  lcall  delay_1

          mov    a,r7
 	  rrc    a
	  mov    r7,a
          jnb    k1,quit_k1
	  jnb    k2,quit_k1
	  sjmp   loop_led1
quit_k1:
          ret
; 	  
;----------------------------------------------
tab: ;数码管显示0,1,2,3,4,5,6,7,8,9代码(查表用)
      db     3fh;  "0"
      db     06h;  "1"
      db     5bh;  "2"
      db     4fh;  "3"
      db     66h;  "4"
      db     6dh;  "5"
      db     7dh;  "6"
      db     07h;  "7"
      db     7fh;  "8"
      db     67h;  "9"
      db     77h;  "a"
      db     7ch;  "b"
      db     39h;  "c"
      db     5eh;  "d"
      db     79h;  "e"
      db     71h;  "f"
      db     00h;  " "

;--------------------------------     
f_numb:  ;a=?
      mov    dptr,#tab  ;置表的头
      movc   a,@a+dptr  ;查表
      ret
   
display: ;numb_s=?  numb_g=?
      mov    a,numb_s     
      lcall  f_numb; 查表
      mov    dptr,#disp_s;置十位的地址
      movx   @dptr,a;写数

      mov    a,numb_g;
      lcall  f_numb; 查表
      mov    dptr,#disp_g;置个位的地址
      movx   @dptr,a;写数
      ret

         
main:                    ;主程序入口
      mov    sp,#90h     ;设堆栈
      mov    ip,#00h     ;关中断

      lcall  sprak_on    ;发声
      lcall  delay_2
      lcall  sprak_on    ;发声

      mov    numb_s,#02h ;显示2
      mov    numb_g,#01h ;显示1
      lcall  display     ;调用显示程序

      lcall  loop_led
      mov    led,#55h; 显示55
      lcall  disp_led; 
loop:
      ;jnb    k1,to_disp
      ;jnb    k2,to_led
      ;sjmp   loop

to_disp:

      mov    numb_s,#00h  ;显示0
      mov    numb_g,#01h  ;显示1

loop1:
      lcall  display   ;显示
      lcall  delay_2   ;延时

      inc    numb_s
      clr    c
      mov    a,numb_s
      subb   a,#09h
      jnc    clr_numb_s

tnumb_g:     
      inc    numb_g
      clr    c
      mov    a,numb_g
      subb   a,#09h
      jnc    clr_numb_g
 tnumb_gg:
      mov    a,led
      cpl    a
      mov    led,a
      lcall  disp_led
      jnb    k1,main   ;查键
      jnb    k2,main   ;查键
      sjmp   loop1

clr_numb_s:
      mov    numb_s,#00h
      sjmp   tnumb_g

clr_numb_g:
      mov    numb_g,#00h
      sjmp   tnumb_gg

      
to_led:
      sjmp   $

      end  




 
        

⌨️ 快捷键说明

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