• <tbody id="w8jhq"><dfn id="w8jhq"><pre id="w8jhq"></pre></dfn></tbody>
  • <fieldset id="w8jhq"><pre id="w8jhq"></pre></fieldset>

    久久黄色 视频|我草AV|AV在线网站导航|色色97激情|无码人妻一区二区有奶水|日韩精品|大香蕉97视频|成人a站免费|日本黄色片|久久久久无码AV

    久久黄色 视频|我草AV|AV在线网站导航|色色97激情|无码人妻一区二区有奶水|日韩精品|大香蕉97视频|成人a站免费|日本黄色片|久久久久无码AV

    久久黄色 视频|我草AV|AV在线网站导航|色色97激情|无码人妻一区二区有奶水|日韩精品|大香蕉97视频|成人a站免费|日本黄色片|久久久久无码AV

    技術(shù)熱線: 4007-888-234
    設(shè)計(jì)開發(fā)

    專注差異化嵌入式產(chǎn)品解決方案 給智能產(chǎn)品定制注入靈魂給予生命

    開發(fā)工具

    提供開發(fā)工具、應(yīng)用測試 完善的開發(fā)代碼案例庫分享

    技術(shù)支持

    從全面的產(chǎn)品導(dǎo)入到強(qiáng)大技術(shù)支援服務(wù) 全程貼心伴隨服務(wù),創(chuàng)造無限潛能!

    新品推廣

    提供新的芯片及解決方案,提升客戶產(chǎn)品競爭力

    新聞中心

    提供最新的單片機(jī)資訊,行業(yè)消息以及公司新聞動態(tài)

    實(shí)戰(zhàn)十三:按鍵觸發(fā)的1位累加器

    更新時(shí)間: 2019-03-25
    閱讀量:1217

    按鍵觸發(fā)的1位累加器
    ;按鍵S3觸發(fā)累加計(jì)數(shù)顯示0---9的數(shù)碼管程序
    ;使用資源
     ;1、PORTA口,做為6位數(shù)碼管的位選信號
     ;2、PORTB口,在此只利用了RBO口做按鍵輸入
     ;3、PORTC口,7段數(shù)碼管的段信號
    ;功能說明
    ;1、該程序的功能是把演示板當(dāng)做一個按鍵計(jì)數(shù)器。接通電源時(shí),按下IDE軟軟件的運(yùn)行鍵6只數(shù)碼管全顯示000000。
    ;每按下開關(guān)S3(RB0)時(shí),計(jì)數(shù)器的值加1,數(shù)碼管顯示也增加1,然后松開按鈕;以些類推,反復(fù)循環(huán)。
    ;2、程序中包含按鍵按下檢測跟釋放檢測,并且都伴有一定的延時(shí)去抖功能,只有在一次按鍵被釋放后才進(jìn)行第2次按鍵的判斷
    ;3、程序中需開啟B口的內(nèi)部弱上拉功能,因DEMO板上無上拉電阻;并把A口全部設(shè)置為普通I/O口,上電復(fù)位后A口為模擬輸入口。

    ;硬件連接
    ;1、DEMO實(shí)驗(yàn)板作以下設(shè)置  s1拔到0FF,S13除拔碼開關(guān)1為ON外其余的全拔到OFF
    ;2、S4,S5全部拔到ON    LCD不要插在演示板上
    ;程序文件名&ldquo;count.ASM"

    ;程序清單如下:
    ;**************************************************
      __CONFIG 3F39H;設(shè)置配置位中振蕩方式為XT,其它全部禁止或關(guān)閉
    ;*************************************************
    PCL       equ     2h     ;定義寄存器PCL的地址為02H
    status    equ     3h     ;定義狀態(tài)寄存器地址
    porta     equ     5h     ;定義端口A的數(shù)據(jù)寄存器地址
    portb     equ     6h     ;定義端口B的數(shù)據(jù)寄存器地址
    portc     equ     7h     ;定義端口C的數(shù)據(jù)寄存器地址
    trisa      equ     85h    ;定義端口A的方向控制寄存器地址
    trisb     equ     86h    ;定義端口B的方向控制寄存器地址
    trisc     equ     87h    ;定義端口C的方向控制寄存器地址
    option_reg equ    81h
    adcon1    equ     9fh    ;ADC控制寄存器1
    ;**************************************************
    data1     equ     20h    ;定義一個廷時(shí)變量寄存器
    data2     equ     21h    ;定義另一個廷時(shí)變量寄存器
    n1        equ     d'13'  ;定義一個外層循環(huán)廷時(shí)常數(shù)
    n2        equ     0ffh   ;定義一個內(nèi)層廷時(shí)常數(shù)
    rp0       equ     5      ;定義狀態(tài)寄存器的頁選位RP0
    z         equ     2      ;定義0標(biāo)志位位地址
    ;********************************************** ***
    wang      equ     22h        ;定義顯示寄存器的地址
    yan       equ     23h        ;定義計(jì)數(shù)寄存器的地址
    ;*************************************************
              org    000h        ;定義程序存放區(qū)域的起始地址
              nop                ;放置一條ICD必須的空操作指令
              goto   main
    main      bsf    status,rp0  ;設(shè)置文件寄存器體1
              movlw  00h         ;將端口C的方向控制碼00H先送W
              movwf  trisa       ;再轉(zhuǎn)到方向寄存器,將其設(shè)置為輸出
              movwf  trisc       ;設(shè)置C口為輸出
              movlw  0ffh        ;同理,將端口B設(shè)置為輸入
              movwf  trisb    
              clrf   option_reg  ;開起內(nèi)部弱上拉
              movlw  06h
              movwf  adcon1      ;設(shè)置A口為普通的數(shù)字口
              bcf    status,rp0  ;恢復(fù)到文件寄存器體0
              clrf   porta       ;使PORTA輸出為低電平,讓所有數(shù)碼管共陽極都為高電平
    loop1     movlw  .10
              movwf  yan         ;設(shè)置循環(huán)值10
              movlw  00h      
              movwf  wang        ;送初值00H到wang顯示寄存器
    loop2     
              movf   wang,0
              subwf  yan,0       ;判斷是否到了顯示數(shù)值&ldquo;9&rdquo;
              btfsc  status,z     ;全亮則返回loop1重新給yan,wang賦值為0
              goto   loop1
              movf   wang,0      ;否則繼續(xù)調(diào)用顯示程序
              call   CHABIAO     ;調(diào)用數(shù)碼段顯示程序
              movwf  portc
             
    ;-----------------------------------------------------------------------------
    ;測試按鍵與否,以及如按下鍵則寄存器wang的數(shù)據(jù)加1
    ;-----------------------------------------------------------------------------
    check     btfsc  portb,0     ;測試S3按下否?是!跳過下條指令
              goto   check       ;否!則循環(huán)檢測
              call   delay       ;調(diào)用廷時(shí)子程序,消除按鈕抖動的影響
              btfsc  portb,0     ;再次測試S3按下否?是!跳過下條指令
              goto   check       ;否!則循不檢測
              incf   wang,1      ;寄存器wang的數(shù)據(jù)寄存器加1
             
    check1    btfss  portb,0    ;測試S3斷開否?是!跳過下條指令
              goto   check1     ;否!則循不檢測
              call   delay      ;調(diào)用廷時(shí)子程序,消除按鈕抖動的影響
              btfss  portb,0    ;再次測試S3斷開否?是!跳過下條指令
              goto   check1     ;否!則循不檢測
              goto   loop2      ;返回
    ;*************10MS廷時(shí)子程序************************
    delay                       ;子程序名,也是子程序入口地址
              movlw n1          ;將外層循環(huán)參數(shù)值送到DATA1
              movwf data1     
    lp0       movlw n2          ;將內(nèi)層循環(huán)參數(shù)值送到DATA2
              movwf data2    
    lp1       decfsz data2,1    ;變量DATA2內(nèi)容遞減,若為0則跳躍
              goto lp1          ;跳轉(zhuǎn)到LP1
              decfsz data1,1    ;變量DATA1內(nèi)容遞減,若為0則跳躍
              goto lp0          ;跳轉(zhuǎn)到LP0
              return            ;返回主程序
    ;***********共陽數(shù)碼管查表子程序***************           
    CHABIAO                     ;取數(shù)碼管段碼
                ADDWF PCL,1     ;地址偏移量加當(dāng)前PC
                RETLW 0C0H      ;0                            
                RETLW 0F9H      ;1
                RETLW 0A4H      ;2
                RETLW 0B0H      ;3
                RETLW 99H       ;4
                RETLW 92H       ;5
                RETLW 82H       ;6
                RETLW 0F8H      ;7
                RETLW 80H       ;8
                RETLW 98H       ;9

    ;-----------------------------------------------------------------------------
                END             ;源程序結(jié)束
    ;-----------------------------------------------------------------------------

    ;    進(jìn)入該實(shí)戰(zhàn)演練的工序流程如下:
    ;    1.創(chuàng)建源文件和編輯源文件;在此介紹一種不同于前面講的創(chuàng)建源文件的方法,用Windows附件中的&rdquo;記事本&rdquo;
    ;   這個為大家所熟知和好用的文件編輯器,并且可以方便的加入中文注釋.不過有兩點(diǎn)需要注意,一是注釋前面的
    ;   分號&rdquo;;&rdquo;必須用西文半角輸入;二是必須用&rdquo;.asm&rdquo;擴(kuò)展名存儲到事先建立的一個專用子目錄下.
    ;    2.打開MPLAB集成開發(fā)環(huán)境:首先在WINDOWS環(huán)境下,選用開始>程序>Microchip MPLAB>MPLAB命令,啟動MPLAB
    ;   并進(jìn)入MPLAB的桌面.
    ;    3.創(chuàng)建項(xiàng)目:選用菜單File>New或Project>New Project,在事先建立的一個專用子目錄下創(chuàng)建一個新項(xiàng)目,將
    ;   用記事本創(chuàng)建的源文件加入到該項(xiàng)目中.
    ;    4.建立項(xiàng)目中的目標(biāo)文件:選擇菜單Project >Build All(項(xiàng)目>建立所有文件),MPLAB將自動調(diào)用MPASM將項(xiàng)目
    ;   文件管理下的源文件(.asm)匯編成十六進(jìn)制的目標(biāo)文件(.hex).


    久久黄色 视频|我草AV|AV在线网站导航|色色97激情|无码人妻一区二区有奶水|日韩精品|大香蕉97视频
  • <tbody id="w8jhq"><dfn id="w8jhq"><pre id="w8jhq"></pre></dfn></tbody>
  • <fieldset id="w8jhq"><pre id="w8jhq"></pre></fieldset>