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

📄 clock.asm

📁 这是我写的一个电子钟的程序
💻 ASM
字号:
led1 equ 21h
led2 equ 22h
led3 equ 23h
led4 equ 24h
led5 equ 25h
led6 equ 26h
xscx  equ 27h
hor equ 30h
min equ 31h
sec equ 32h
sw1      bit    p2.7
sw2      bit    p2.6
sw3      bit    p2.5
sw4      bit    p2.4
sw5      bit    p2.3
sw6      bit    p2.2
beep     bit    p2.0
key      bit    p3.3

org 000h
ljmp start
org 00bh
ljmp timer0
org 100h
start:mov sp,#40h                 ;初始化注意清零的时候不要把r0,r1也同时清零了会造成死循环 清自己。
                                  ;清零的时候00H是r0,7f最后没清到他 但r1就会清到自己
      
      mov r0,#7fh
clear:mov a,#00h
      mov @r0,a
      djnz r0,clear
      mov p0,#0ffh                 ;管脚初始化
      mov p2,#0ffh
      mov p3,#0ffh
      mov p1,#0ffh
      mov ie,#82h                   ;开定时中断0
    
      mov tmod,#01h                 ;定时器0工作在模式1
      mov th0,#high(65536-6667)
      mov tl0,#low(65536-6667)
      setb tr0
      mov r7,#250
      mov xscx,#7fh
      mov r0,#21h
      

wait_key:jb key,$             
         
         jnb sw1,sw1_ok
         jnb sw2,sw2_ok
         jnb sw3,sw3_ok
         jnb sw4,sw4_ok
         jnb sw5,sw5_ok
         jnb sw6,sw6_oka
         jmp wait_key
sw6_oka: ljmp sw6_ok
sw1_ok:  mov a,hor
         cjne a,#23,sw1_over
         mov hor,#00h
         clr beep
         lcall delay
         setb beep
         sjmp wait_key
sw1_over:inc hor
         clr beep
         lcall delay
         setb beep
         sjmp wait_key
sw2_ok:  mov a,hor
         cjne a,#00h,sw2_over
         mov hor,#23
         clr beep
         lcall delay
         setb beep
         sjmp wait_key
sw2_over:dec hor
         clr beep
         lcall delay
         setb beep
         sjmp wait_key 
sw3_ok:  mov a,min
         cjne a,#59,sw3_over
         mov min,#00h
         clr beep
         lcall delay
         setb beep
         sjmp wait_key
sw3_over:inc min
         clr beep
         lcall delay
         setb beep
         sjmp wait_key    
sw4_ok:  mov a,min
         cjne a,#00h,sw4_over
         mov min,#59
         clr beep
         lcall delay
         setb beep
         sjmp wait_key
sw4_over:dec min
         clr beep
         lcall delay
         setb beep
         ljmp wait_key
sw5_ok:  mov a,sec
         cjne a,#59,sw5_over
         mov sec,#00h
         clr beep
         lcall delay
         setb beep
         ljmp wait_key
sw5_over:inc sec
         clr beep
         lcall delay
         setb beep
         ljmp wait_key 
sw6_ok:  mov a,sec
         cjne a,#00h,sw6_over
         mov sec,#59
         clr beep
         lcall delay
         setb beep
         ljmp wait_key
sw6_over:dec sec
         clr beep
         lcall delay
         setb beep
         ljmp wait_key    



timer0:push acc
       push psw
       mov th0,#high(65536-6667)
       mov tl0,#low(65536-6667)
       djnz r7,xianshi                ;处理后显示
       mov r7,#250
       inc sec
       mov a,sec
       cjne a,#60,xianshi        
       mov sec,#00h
       inc min
       mov a,min
       cjne a,#60,xianshi      
       mov min,#00h
       inc hor
       mov a,hor
       cjne a,#24,xianshi          
                          

xianshi:mov a,sec
        lcall bin_bcd
        mov led6,b
        mov led5,a
        mov a,min
        lcall bin_bcd
        mov led4,b
        mov led3,a
        mov a,hor
        lcall bin_bcd
        mov led2,b
        mov led1,a
        sjmp dir
bin_bcd:mov b,#10
        div ab
        ret

dir:
    
    mov a,xscx
    mov p2,a
    mov a,@r0
    mov dptr,#tab
    movc a,@a+dptr
    mov p0,a          
    mov a,xscx
    jnb acc.2,cx
    rr a
    mov xscx,a
    inc r0
    sjmp done
cx: mov xscx,#7fh
    mov r0,#21h
    sjmp done
tab:DB 0C0H,0F9H,0A4H,0B0H,99H
    DB 92H,82H,0F8H,80H,90H
            
delay:mov r4,#2
 del1:mov r5,#0ffh
 del2:mov r6,#0ffh
      djnz r6,$
      djnz r5,del2
      djnz r4,del1
      ret
done:pop psw
     pop acc
     reti

     end






       
      

⌨️ 快捷键说明

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