导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→在做课程设计时做的小程序,用于键盘扫描并显示,有记数和定时两

* 94635: 在做课程设计时做的小程序,用于键盘扫描并显示,有记数和定时两个功能,各位大虾献丑了

   kyomen 
kyomen发表的帖子 

 在做课程设计时做的小程序,用于键盘扫描并显示,有记数和定时两个功能,各位大虾献丑了
PS:因为是小弟的第一张贴子比较仓促没有注释,不过简单得很,一看就知道
PS:支持原创!
org  0000h
ljmp main
org 000bh
ljmp it0p
org 0200h
main:      mov 30h , #00h
           mov 31h , #00h
     mov 32h , #00h
     mov 33h , #00h
           mov p1 , #0fh
     lcall delay1
     mov a , p1
     cjne a , #0fh , q
     ljmp funtion1
q:     lcall  keyscan
     lcall  tran
     cjne   a  , #0eh , funtion0
     ljmp   count
funtion0:  cjne   a , #0fh , funtion1
           ljmp   tnt
funtion1:  lcall display
           ljmp main
     
count:    mov 30h , #00h
          mov 31h , #00h
    mov 32h , #00h
    mov 33h , #00h
q3:    mov p1 , #0fh
    lcall delay1
    mov a , p1
    cjne a, #0fh , q1
    ljmp q2
q1:    lcall keyscan
    lcall tran
    cjne a , #0ah , funtion00
    ljmp count1
funtion00: cjne a , #0bh , funtion11
          ljmp count2
funtion11:  mov 33h ,32h 
      mov 32h, 31h
      mov 31h , 30h
      mov 30h , a
q2:         lcall display
            ljmp q3
count1:        mov a , 30h
      inc a 
      mov 30h , a
      cjne a  , #0ah ,  q3
count10:    mov 30h ,#00h
               mov  a , 31h
               inc a 
      mov 31h , a
      cjne a , #0ah ,   q3 
count100:      mov 31h , #00h
               mov a , 32h
               inc a 
      mov 32h ,a 
      cjne a , #0ah , q3
count1000:      mov 32h , #00h
                mov a , 33h
                inc a 
    mov 33h , a
    cjne  a  , #0ah ,q3
                 lcall sound1
     mov 33h ,#00h
     ljmp q3
count2:        dec 30h
               mov a , 30h
      cjne a  , #0ffh ,  q3
count20:    mov 30h ,#09h
               dec 31h
      mov  a , 31h
      cjne a , #0ffh , q3 
count200:      mov 31h , #09h
               dec 32h
      mov a , 32h 
      cjne a , #0ffh  , q4
count2000:      mov 32h , #09h
                dec 33h
    mov  a , 33h
    cjne  a  , #0ffh ,q4
                 lcall sound1
     mov 33h ,#09h
q4:     ljmp q3
ret
tnt:      mov tmod , #01h
                mov 20h , #0ah
    clr a
    mov 40h , a
    mov 41h , a
    mov 42h , a
    mov 43h , a
    setb et0
    setb ea
    mov th0 , #3ch
    mov tl0 , #0b0h
    setb tr0
    mov 30h , #00h
    mov 31h , #00h
    mov 32h , #00h
    mov 33h , #00h
here:           lcall display
    ljmp here
ret
it0p:              mov th0 , #3ch
       mov tl0 , #0b0h
       djnz 20h , return
       mov 20h , #0ah
       lcall sound
       inc 40h
       mov 30h , 40h
       mov a , 40h
       cjne A , #0ah , return
       mov 40h , #00h
       mov 30h , 40h
       inc 41h
       mov 31h , 41h
       mov a , 41h
       cjne a , #07h , return
       mov 41h , #00h
       mov 31h , 41h
       inc 42h 
       mov 32h , 42h
       mov a , 42h
       cjne a, #0ah , return
       mov 42h , #00h
       mov 32h , 42h
       inc 43h
       mov 33h , 43h
       mov a  , 43h
       cjne a , #07h , return
       mov 43h , #00h
       mov 33h , 43h
return:            nop
                   reti
      

ljmp main
keyscan:   lcall keyscan1
     lcall delay1
     lcall keyscan1
     jnb p1.4 , value10
     jnb p1.5 , value20
     jnb p1.6 , value30
     jnb p1.7 , value40
  value10:   mov r1 , #01h
                    ljmp row
  value20:           mov r1 , #02h
                    ljmp row
  value30:           mov r1 , #03h
                    ljmp row
  value40:           mov r1 ,#04h
     row:   lcall keyscan2
                 jnb p1.0 , value100
     jnb p1.1 , value200
     jnb p1.2 , value300
     jnb p1.3 , value400
 value100:   mov r2 , #10h
                    ljmp value 
 value200:   mov r2 , #20h
                    ljmp value
 value300:   mov r2 , #30h
                    ljmp value
 value400:   mov r2 , #40h
   value:   mov a , r1
                    add a , r2
        lcall delay1
     lcall keyscan3
        ret
keyscan1:           mov p1 ,  #0f0h
    loop:           lcall delay
                    mov a , p1
                    cjne a , #0f0h  ,loop1
     ljmp loop
   loop1:         nop
                    ret
keyscan2:           mov p1 ,  #0fh
   loop3:           lcall delay
                    mov a , p1
                    cjne a , #0f0h  ,loop4
                    ljmp loop3
   loop4:         nop
                    ret
keyscan3:           mov p1  , #0fh
 loop5:             lcall delay
     mov a , p1
     cjne a  , #0fh , loop5
        lcall sound
     ret
   delay:           mov r7 , #25             _/*延时500ms*/
    del1:           mov r6 , #200
     del:           djnz r6 , del
                    djnz r7 , del1
                    ret
 delay1:        mov r7 ,  #2
  del00:              mov r6 , #0ffh
 del0:      djnz r6 , del0
                    djnz r7 , del00
        ret
tran:    cjne r2 , #10h , lie2
         ljmp panduanhang1
lie2:    cjne r2 , #20h ,  lie3
         ljmp panduanhang2
lie3:    cjne r2 , #30h , lie4
         ljmp panduanhang3
lie4:    cjne r2 , #40h , tran
         ljmp panduanhang4
ret
panduanhang1:   cjne r1 ,#1h , hang2
               ljmp value0
       hang2:   cjne r1 , #2h , hang3
               ljmp value1
       hang3:   cjne r1 , #3h , hang4
               ljmp value2
       hang4:   cjne r1 , #4h , panduanhang1
               ljmp value3
               ret
panduanhang2:   cjne r1 ,#1h , hang22
               ljmp value4
       hang22:   cjne r1 , #2h , hang32
               ljmp value5
       hang32:   cjne r1 , #3h , hang42
               ljmp value6
       hang42:   cjne r1 , #4h , panduanhang2
               ljmp value7
               ret
panduanhang3:   cjne r1 ,#1h , hang23
               ljmp value8
       hang23:   cjne r1 , #2h , hang33
               ljmp value9
       hang33:   cjne r1 , #3h , hang43
               ljmp valuea
       hang43:   cjne r1 , #4h , panduanhang3
               ljmp valueb
               ret
panduanhang4:   cjne r1 , #1h  , hang24_/*R2ÖеÄÄÚÈÝ´ú±íÐÐ*/
               ljmp valuec
       hang24:   cjne r1 , #2h , hang34
               ljmp valued
       hang34:   cjne r1 , #3h , hang44
               ljmp valuee
       hang44:   cjne r1 , #4h , panduanhang4
               ljmp valuef
               ret
value0:    mov a , #00h
           ret
value1:    mov a , #01h
           ret
value2:    mov a , #02h
           ret
value3:    mov a , #03h
           ret
value4:    mov a , #04h
           ret
value5:    mov a , #05h
           ret
value6:    mov a , #06h
           ret
value7:    mov a , #07h
           ret
value8:    mov a , #08h
           ret
value9:    mov a , #09h
           ret
valuea:    mov a , #0ah
           ret
valueb:    mov a , #0bh
           ret
valuec:    mov a , #0ch
           ret
valued:    mov a , #0dh
           ret
valuee:    mov a , #0eh
           ret
valuef:    mov a , #0fh
           ret
 sound:    clr p3.4
           lcall delay1
     setb p3.4
     ret
 sound1:   clr p3.4
           lcall delay3
     setb p3.4
     ret
 display:     mov p2 , #0efh
              mov a , 30h
              lcall keydispaly
              lcall delay1
              mov p2 , #0dfh
              mov a , 31h
              lcall keydispaly
              lcall delay1
              mov p2 , #0bfh
              mov a , 32h
              lcall keydispaly
              lcall delay1
              mov p2 , #7fh
              mov a , 33h
              lcall keydispaly
              lcall delay1
              ret
 delay3:            mov r6 , #200
     del2:           djnz r6 , del2
                    ret
keydispaly:    
         mov dptr , #tab1
         mov b , #03h
         mul ab
         mov r2 , a
         mov a , b
         add a , dph
         mov dph , a
         mov a , r2
         jmp @a+dptr
tab1:    ljmp keyvalue0_/*键值查表*/
         ljmp keyvalue1
         ljmp keyvalue2
         ljmp keyvalue3
         ljmp keyvalue4
         ljmp keyvalue5
         ljmp keyvalue6
         ljmp keyvalue7
         ljmp keyvalue8
         ljmp keyvalue9
         ljmp keyvaluea
   ljmp keyvalueb
   ljmp keyvaluec
   ljmp keyvalued
   ljmp keyvaluee
   ljmp keyvaluef
ret             
keyvalue0:    mov p0 , #0c0h_/*译码程序*/
              ret
keyvalue1:    mov p0 , #0f9h
              ret
keyvalue2:    mov p0 , #0a4h
              ret
keyvalue3:    mov p0 , #0b0h
              ret
keyvalue4:    mov p0 , #99h
              ret
keyvalue5:    mov p0 , #92h
              ret
keyvalue6:    mov p0 , #82h
              ret
keyvalue7:    mov p0 , #0f8h
              ret
keyvalue8:    mov p0 , #80h
              ret
keyvalue9:    mov p0 , #90h
              ret
keyvaluea:    mov p0 , #88h
              ret
keyvalueb:    mov p0 , #83h
              ret
keyvaluec:    mov p0 , #0c6h
              ret
keyvalued:    mov p0 , #0a1h
              ret
keyvaluee:    mov p0 , #86h
              ret
keyvaluef:    mov p0 , #8eh
              ret
 end


发表时间:2006年6月13日20:07:01

  
回复该帖

本主题共有 1 帖,分页:>>>>>该主题的所有内容[1]条

 *树形目录 只列出部分跟帖的标题以及简单的摘要信息 该主题的部分跟帖如下:

[上一篇帖子]:mcs51标度变换需要把5g14433采集进来的0-1.999v的电压值转为0-100度的温度值的b
[下一篇帖子]:求急~~~设计分秒计时器,最好用AT98C51谁帮帮我啊~~设计一个分秒计时器