久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2851|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

2io5鍵盤(pán)模擬音量數(shù)碼管顯示程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:829814 發(fā)表于 2020-10-30 15:40 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
代碼如下

;*******************************************************************************
;*文件: 5key_volume_con.asm                                                    *
                                                     *
;*版本: ver1.0                                                                 *
;*功能描述: 混合鍵盤(pán)模擬音量數(shù)碼管顯示                                         *
;*          上兩鍵:左鍵音量-,右鍵音量+                                         *
;*          下三鍵:左鍵音量24級(jí),中鍵音量32級(jí),右鍵音量05級(jí)                      *
;*備注:                                                                        *
;*軟件仿真: PROTEUS 6                                                          *
;*******************************************************************************
    KEY_OK      BIT     00H
    VOLNUMB     EQU     22H     
    PHONE       EQU     21H
    COUNTER     EQU     23H     ;用于顯示的計(jì)數(shù)器
    KEYVAL      EQU     25H
    DISPBUF     EQU     5EH
    FIRST       BIT     P2.7    ;第一位數(shù)碼管的位控制
    SECOND      BIT     P2.6    ;第二位數(shù)碼管的位控制
    TMRVAR      EQU     60110   ;65536-5000*12/11.0592  定時(shí)器初值5毫秒
;===============================================================================        
    ORG     0000H   
    JMP     START
    ORG     0*8+3               ;INT0中斷入口
    RETI
    ORG     1*8+3               ;TIMER0中斷入口
    JMP     INT_T0              ;轉(zhuǎn)去定時(shí)器0中斷服務(wù)程序入口
    ORG     2*8+3               ;INT1中斷入口
    RETI
    ORG     3*8+3               ;TIMER1中斷入口
    RETI
    ORG     4*8+3               ;串行中斷入口
    RETI
;===============================================================================
START:
    mov     sp,#5fh
    mov     p1,#0ffh
    mov     p3,#0ffh         
    mov     volnumb,#40h
    call    init_t0
    setb    ea
;===============================================================================
LOOP:;主程
    ACALL KEY
    JB KEY_OK,KEYPROC
    ACALL DISP_VOL
    AJMP LOOP         
;===============================================================================  
disp_vol:;顯示處理
        mov a,volnumb
        swap a
        anl a,#0fh
        mov dispbuf,a;十位到DISPBUF
        mov a,volnumb
        anl a,#0fh
        mov dispbuf+1,a;個(gè)位到DISPBUF+1
        ret
;==============================================================================
keyproc:;鍵處理散轉(zhuǎn)
    mov a,keyval
    mov keyval,#00h
    rl a
    mov dptr,#tab_key
    jmp @a+dptr
tab_key:
    ajmp loop
    ajmp volup
    ajmp voldw
    ajmp volrsum
    ajmp vol24
    ajmp vol05
;===============================================================================
KEY:;鍵盤(pán)程序
         clr key_ok;清鍵按下標(biāo)志
         orl p3,#11000000b;下面三鍵判斷
         clr key_ok
         mov a,p3
         orl a,#00111111b
         cpl a
         jz key_1
         acall delay
         acall delay
         mov a,p3
         orl a,#00111111b
         jz key_1
         nop
         jnb acc.7,keydw1
         nop
         jb acc.6,key_ret
         setb key_ok
         mov keyval,#3
key_ret1:mov a,p3
         orl a,#00111111b
         cpl a
         jnz key_ret1;鍵松開(kāi)否
         ajmp key_ret
key_ret:ret
keydw1:  
         nop
         jnb acc.6,keydw2
         setb key_ok
         mov keyval,#4
         jmp key_ret1
keydw2:  setb key_ok
         mov keyval,#5
         jmp key_ret1  
key_1:   
         setb p3.6
         clr p3.7 ;vol+按下
         nop
         nop
         jnb p3.6,key01
   
         clr  p3.6;vol-按下
         setb p3.7
         nop
         nop
         jnb  p3.7,key02
         
keyexit: ajmp key_ret
key01:
         acall delay
         acall delay
         nop
         nop
         jb p3.6,key01_ret
         setb key_ok
         mov keyval,#1
         nop
         acall delay
         acall delay
key01_ret:jnb p3.6,$
         ajmp keyexit
key02:
         acall delay
         acall delay
         nop
         nop
         jb p3.7,key02_ret
         setb key_ok
         mov keyval,#2
         nop
         acall delay
         acall delay
key02_ret:jnb p3.7,$
         ajmp keyexit
delay:;                去鍵抖延時(shí)
         push psw
         setb rs0
         mov  r7,#50
     d1: mov  r6,#50
     d2: djnz r6,d2
         djnz r7,d1
         pop  psw
         ret
;===============================================================================   
volup:;鍵盤(pán)音量+
        mov phone,volnumb
        mov a,phone
        xrl a,#70h
        jz volup1
        acall uaa
        mov volnumb,phone
        jmp loop
volup1: mov volnumb,#70h
        jmp loop
;===============================================================================
voldw:;鍵盤(pán)音量-
        mov phone,volnumb
        mov a,phone
        jz voldw1
        acall daa
        mov volnumb,phone
        jmp loop
voldw1: mov volnumb,#00h
        jmp loop
;===============================================================================
volrsum:;32級(jí)
        mov volnumb,#32h
        ajmp loop
vol24:;24級(jí)
       mov volnumb,#24h
       ajmp loop
vol05:;05級(jí)
       mov volnumb,#05h
       ajmp loop
;===============================================================================
uaa:;遞增1
        mov a,phone
        swap a
        anl a,#0fh
        mov r5,a
        mov a,phone
        anl a,#0fh
        nop
        cjne a,#09h,uaa_1
        nop
        mov r4,#00h
        inc r5
        ajmp uaa_2
uaa_1:
        inc a
        mov r4,a
uaa_2:
        mov a,r5
        swap a
        add a,r4
        mov phone,a
        ret
;===============================================================================
daa:;遞減1
        mov a,phone
        swap a
        anl a,#0fh
        mov r5,a
        mov a,phone;
        anl a,#0fh
        jnz daa_1
        mov r4,#09h
        dec r5
        nop
        sjmp daa_2
  daa_1:
        dec a
        mov r4,a
  daa_2:
        mov a,r5;
        swap a
        add a,r4
        mov phone,a
        ret
;===============================================================================   
INIT_T0:                ;初始化T0為5毫秒的定時(shí)器
    MOV     TMOD,#01H
    MOV     TH0,#HIGH(TMRVAR)
    MOV     TL0,#LOW(TMRVAR)
    SETB    ET0         ;開(kāi)T0中斷
    SETB    TR0         ;定時(shí)器0開(kāi)始運(yùn)行
    RET                 ;返回
;===============================================================================
;以下是中斷程序,實(shí)現(xiàn)數(shù)碼管顯示
INT_T0:                 ;定時(shí)器T0的中斷響應(yīng)程序
    PUSH    ACC         ;ACC入棧
    PUSH    PSW         ;PSW入棧
    MOV TH0,#HIGH(TMRVAR)
    MOV TL0,#LOW(TMRVAR)
    SETB    FIRST
    SETB    SECOND      ;關(guān)顯示
    MOV     A,#DISPBUF  ;顯示緩沖區(qū)首地址
    ADD     A,Counter
    MOV     R0,A
    MOV     A,@R0       ;根據(jù)計(jì)數(shù)器的值取相應(yīng)的顯示緩沖區(qū)的值
    MOV     DPTR,#DISPTAB   ;字形表首地址
    MOVC    A,@A+DPTR   ;取字形碼
    MOV     P0,A        ;將字形碼送P0位(段口)
    MOV     A,Counter   ;取計(jì)數(shù)器的值
    JZ      DISPFIRST   ;如果是0則顯示第一位
    CLR     SECOND      ;否則顯示第二位
    AJMP    DISPNEXT
DISPFIRST:
    CLR     FIRST       ;顯示第一位
DISPNEXT:
    INC     Counter     ;計(jì)數(shù)器加1
    MOV     A,Counter
    DEC     A           ;如果計(jì)數(shù)器計(jì)到2,則讓它回0
    DEC     A
    JZ      RSTCOUNT
    AJMP    DISPEXIT
RSTCOUNT:
    MOV     Counter,#0  ;計(jì)數(shù)器的值只能是0或1
DISPEXIT:   
    POP     PSW
    POP     ACC
    RETI
DISPTAB:    DB 28H,7EH,0a4H,64H,72H,61H,21H,7CH,20H,60H
    END

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩

相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:1 發(fā)表于 2020-10-31 03:43 | 只看該作者
本帖需要重新編輯補(bǔ)全電路原理圖,源碼,詳細(xì)說(shuō)明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 91成人小视频 | 一级片在线视频 | 亚洲一区二区三区国产 | 在线观看亚洲 | 一区视频在线 | 欧美精品二区 | 91av久久久 | 亚洲人成人一区二区在线观看 | 中文字幕在线电影观看 | 中文字幕精品一区二区三区精品 | 中文字幕国产 | 免费av一区二区三区 | www.玖玖玖 | 日一日操一操 | 日本一卡精品视频免费 | 成人自拍av | 久久99精品久久久久久 | 欧美a在线| 婷婷色成人 | 亚洲日韩中文字幕一区 | 亚洲第一成年免费网站 | 91国产视频在线观看 | 中文字幕欧美在线观看 | 免费看国产精品视频 | 日日草夜夜草 | 一区二区三区久久久 | 国产精品自产拍 | 成人毛片在线视频 | 欧美成年网站 | 国产精品成人一区二区 | 久久精品网 | 亚洲视频在线一区 | 国产免费xxx | 人操人免费视频 | 久久婷婷麻豆国产91天堂 | 中文字幕11页 | 日韩精品一区二区三区在线观看 | 久久久久久天堂 | 欧美大片一区 | 亚洲精品一区二区三区中文字幕 | 欧美精品久久久久久久久老牛影院 |