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

專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

PIC單片機(jī)將2個(gè)16進(jìn)制數(shù)轉(zhuǎn)換為5位十進(jìn)制數(shù)并顯示

作者:佚名   來源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時(shí)間:2012年09月27日   【字體:
   #INCLUDE"P16F877.inc"
  
   W_TEMP  EQU 20H ; 實(shí)際上20H、A0H、120H和1A0H
   STATUS_TEMP EQU 21H ;在體0中建立保護(hù)單元 
   PCLATH_TEMP EQU 22H ;在體0中建立保護(hù)單元

   ORG  000H
   GOTO A1
   ORG  004H;定時(shí)中斷入口地址 
   GOTO ZD01;
   ORG  0CH
A1  
   MOVLW 1;位1顯示數(shù)
   MOVWF 5AH; 
   MOVLW 2;位2顯示數(shù)
   MOVWF 5BH;
   MOVLW 3;位3顯示數(shù)
   MOVWF 5CH;
   MOVLW 4;位4顯示數(shù)
   MOVWF 5DH;
   MOVLW 4;顯示位數(shù)
   MOVWF 40H;
   MOVLW B'00000001';位碼
   MOVWF 41H;
   MOVLW 5AH;
   MOVWF FSR ;間接尋址
   BSF  STATUS,RP0;選擇體1
   BCF  STATUS,RP1;
   MOVLW 00H;1:2TMRO比例
   MOVWF OPTION_REG;分頻1/2
   BCF  STATUS,RP0;體0
   BCF  STATUS,RP1;
   MOVLW 0FFH;
   MOVFW TMR0;初值
   BCF  INTCON,T0IF;清定時(shí)中斷標(biāo)志
   BSF  INTCON,T0IE;開定時(shí)中斷
   BSF  INTCON,GIE;開總中斷
  
 
  
A2   CALL CL0;將16進(jìn)制數(shù)調(diào)整為5位10進(jìn)制數(shù)
   NOP;
   NOP;
   MOVFW  50H
   MOVWF  5AH
   MOVFW  51H
   MOVWF  5BH
   
   MOVFW  52H
   MOVWF  5CH
   MOVFW  53H
   MOVWF  5DH
 

   GOTO  A2
CL0  ; MOVLW  0H ;要顯示16進(jìn)制數(shù)低位
  ; MOVWF  50H;
  ; MOVLW  00H;
  ; MOVWF  51H;要顯示16進(jìn)制數(shù)高位
   CALL  CL1
   
   MOVLW  B'00001111'
   ANDWF  54H,0
   MOVWF  50H
   MOVLW  B'11110000'
   ANDWF  54H,1
   SWAPF  54H,0
   MOVWF  51H
     
   MOVFW  52H
   MOVWF  54H
   MOVLW  B'00001111'
   ANDWF  53H,0
   MOVWF  52H
   MOVLW  B'11110000'
   ANDWF  53H,1
   SWAPF  53H,1
   RETURN
  
    
CL1  
   MOVLW  0;
   MOVWF  52H;萬位
   MOVWF  53H;百千位
   MOVWF  54H;個(gè)十位
   MOVWF  55H;進(jìn)位標(biāo)志
   MOVLW  10H;
   MOVWF  56H;循環(huán)次數(shù)
   CLRF  57H;
CL2   BCF   STATUS,C;清C
   RLF   51H,1;循環(huán)左移
   RLF   50H,1;循環(huán)左移
   BTFSC  STATUS,C;判斷C位是否為高
   BSF   55H,0;是置1
   MOVFW  54H;
   ADDWF  55H,0;PIC沒有ADDC指令只能判斷C來加1
   ADDWF  54H,0;與自身相加
   BTFSC  STATUS,C;判斷是否有進(jìn)位
   BSF   57H,7;有則置標(biāo)志
   BTFSC  STATUS,DC;判斷是否有進(jìn)位
   BSF   57H,3;有則置標(biāo)志
   CALL  DA1;調(diào)用十進(jìn)制調(diào)整子程序
   MOVWF  54H;存回54H
   CLRF  55H;清進(jìn)位標(biāo)志
   BTFSC  STATUS,C;判斷C位是否為高
   BSF   55H,0;是置1
   MOVFW  53H;
   ADDWF  55H,0;PIC沒有ADDC指令只能判斷C來加1
   ADDWF  53H,0;與自身相加
   BTFSC  STATUS,C;
   BSF   57H,6;
   
   BTFSC  STATUS,DC;判斷是否有進(jìn)位
   BSF   57H,2;有則置標(biāo)志
   
   CALL  DA1;
   MOVWF  53H;
   CLRF  55H ;
   BTFSC  STATUS,C;
   BSF   55H,0;
   MOVFW  52H;
   ADDWF  55H,0;
   ADDWF  52H,0;
   BTFSC  STATUS,C;
   BSF   57H,5;
   BTFSC  STATUS,C;判斷是否有進(jìn)位
   BSF   57H,1;有則置標(biāo)志
 
   CALL  DA1;
   MOVWF  52H;
   CLRF  55H;
   BTFSS  57H,7;判斷標(biāo)志是否有進(jìn)位
   GOTO  CL03;否
   INCF  53H,1;是進(jìn)位
   MOVLW  60H;
   ADDWF  54H,1;自身加60H 
CL03  BTFSS  57H,3;判斷標(biāo)志是否有進(jìn)位
   GOTO  CL3;否
   MOVLW  6H;
   ADDWF  54H,1;自身加6H 
 
CL3   BTFSS  57H,6;判斷標(biāo)志是否有進(jìn)位
   GOTO  CL04;
   INCF  52H,1;是進(jìn)位
   MOVLW  60H;
   ADDWF  53H,1;自身加60H 
   
CL04  BTFSS  57H,2;判斷標(biāo)志是否有進(jìn)位
   GOTO  CL4;否
   MOVLW  6H;
   ADDWF  53H,1;自身加6H  
CL4   BTFSS  57H,5;判斷標(biāo)志是否有進(jìn)位
   GOTO  CL05;
   INCF  51H,1;是進(jìn)位
   MOVLW  60H;
   ADDWF  52H,1;自身加60H 
CL05  BTFSS  57H,1;判斷標(biāo)志是否有進(jìn)位
   GOTO  CL5;否
   MOVLW  6H;
   ADDWF  52H,1;自身加6H
CL5   
   CLRF  57H;清標(biāo)志
   DECFSZ  56H,1;
   GOTO  CL2;
  
   RETURN;
 
 
 
;;;**************************************************************
;;;    十進(jìn)制數(shù)調(diào)整
;;;**************************************************************   
DA1   MOVWF  60H;將W里的數(shù)保存到60H里
   MOVLW  B'00001111';
   ANDWF  60H,0;將60H的數(shù)與00001111去除高4位
   MOVWF  62H;將去除高位后的數(shù)保存到62H
   MOVLW  0AH;
   SUBWF  62H,0;去除高位的數(shù)減0AH
   BTFSS  STATUS,DC;判斷是否比0AH大
   GOTO  DA2 ;否則跳轉(zhuǎn)
   ADDLW  B'10000';比0AH大則進(jìn)位
   MOVWF  62H;高4位加1
  
DA2   MOVLW  B'11110000';
   ANDWF  60H,1;將60H的數(shù)與11110000去除低4位
   MOVLW  0A0H;
   SUBWF  60H,0;高4位的數(shù)減0A0H
   BTFSS  STATUS,C;判斷是否比0A0H大
   GOTO  DA3;否
   ADDWF  62H,1;是則將差加上低位
   BSF   STATUS,C;是則置位
   GOTO  DA4;
DA3   MOVFW  60H;
   ADDWF  62H,1;否則將高4位加上低4位
   MOVFW  62H;
   ANDLW  B'11110000';
   SUBLW  0A0H ;加后判斷是否大于或等于0A0H
   BCF   STATUS,C;
   BTFSS  STATUS,Z;
   GOTO  DA4;否則退出
   MOVLW  B'00001111';是
   ANDWF  62H,1;則去掉高4位并進(jìn)位
   BSF   STATUS,C;置進(jìn)位標(biāo)志 
DA4   MOVFW  62H;
   RETURN;
 

;**************************************************************
;     定時(shí)中斷數(shù)碼管顯示程序
;**************************************************************
ZD01  BTFSS INTCON,T0IF;判斷是否產(chǎn)生定時(shí)中斷
   GOTO ZD03;否跳出是繼續(xù)執(zhí)行
   MOVWF  W_TEMP;W備份到W_TEMP中
   SWAPF  STATUS,0;STATUS半字交換后送W
   CLRF  STATUS;選擇體0為當(dāng)前體備份
   MOVWF  STATUS_TEMP;將原來的STATUS送體0上的
   MOVF  PCLATH,0;PCLATH送W 
   MOVWF  PCLATH_TEMP;W送備份寄存器中
   CLRF  PCLATH ;設(shè)置為0頁(yè)
 
   BCF  INTCON,T0IF
   BSF  STATUS,RP0;體1
   BCF  STATUS,RP1;
   MOVLW 0;
   MOVWF TRISB;RB口設(shè)為輸出口
   MOVWF TRISD;RD口設(shè)為輸出口
   BCF  STATUS,RP0;體0
   BCF  STATUS,RP1;
   MOVLW 0FFH;
   MOVWF PORTB;RB口輸出高電平
   MOVLW 0
   MOVWF PORTD;RD口輸出低電平起清屏作用
   
   MOVFW INDF;間接尋址顯示數(shù)據(jù)  
   CALL Q1;查數(shù)據(jù)表
   MOVWF PORTB;顯示斷碼輸出到RB口
   INCF FSR,1;間接尋址地址加1
   MOVFW 41H ;位碼
   MOVWF PORTD;位碼輸出到RD口
   RLF  41H,0;處理C
   RLF  41H,1;左移位碼
   DECFSZ 40H,1;判斷是否顯示完4位
   GOTO ZD02;否則繼續(xù)顯示
   MOVLW 4;顯示位數(shù)
   MOVWF 40H;
   MOVLW B'00000001';位碼
   MOVWF 41H;
   MOVLW 5AH;
   MOVWF FSR ;間接尋址
ZD02  
   MOVLW 0FFH;
   MOVFW TMR0;重裝初值
     ; 恢復(fù)現(xiàn)場(chǎng)
   CLRF STATUS;恢復(fù)到體0
   MOVF    PCLATH_TEMP,0;開始恢復(fù)數(shù)據(jù) 
   MOVWF PCLATH;恢復(fù)PCLATH
   SWAPF STATUS_TEMP,0
   MOVWF STATUS;恢復(fù)STATUS
   SWAPF W_TEMP,1;半字交換后放回
   SWAPF W_TEMP,0;再半字交換后送W
ZD03  
   RETFIE ;中斷返回
M001  MOVLW 4
   MOVWF 30H
M002  MOVLW 248
   MOVWF 31H
M003  MOVLW 250
   MOVWF 32H
   DECFSZ 32H
   GOTO $-1
   DECFSZ 31H
   GOTO M003
   DECFSZ 30H
   GOTO M002
   RETURN
  
   
 
;********************************************
;    數(shù)據(jù)表
;********************************************      
Q1   ADDWF   PCL,1  
      RETLW     00C0H        ;0
      RETLW     00F9H        ;1
      RETLW     00A4H        ;2
      RETLW     00B0H        ;3
      RETLW     0099H        ;4
      RETLW     0092H        ;5
      RETLW     0082H        ;6
      RETLW     00F8H        ;7
      RETLW     0080H        ;8
      RETLW     0090H        ;9
      RETLW     0088H        ;A
      RETLW     0083H        ;B
      RETLW     00C6H        ;C
      RETLW     00A1H        ;D
      RETLW     0086H        ;E
      RETLW     008EH        ;F
   END 
關(guān)閉窗口

相關(guān)文章

主站蜘蛛池模板: 精久久久| 一区二区影视 | 国产精品免费看 | 香蕉视频一区二区 | 四色成人av永久网址 | 亚洲国产黄 | 欧美国产视频 | 操射视频 | 1000部精品久久久久久久久 | 网站国产 | 亚洲v日韩v综合v精品v | h片在线播放| 国产成视频在线观看 | 人人玩人人添人人澡欧美 | 日韩国产在线 | 欧美国产视频 | 美女视频黄的免费 | 欧美一级片免费看 | 久久久久成人精品亚洲国产 | 日韩亚洲欧美一区 | 国产福利91精品 | 国产乱码精品一区二三赶尸艳谈 | 91 视频网站 | 日韩在线| 毛片网络 | 欧美一二三 | 日韩视频一区二区在线 | 武道仙尊动漫在线观看 | 国内精品久久影院 | 中文字幕国产精品 | 精品中文在线 | 亚洲天堂av网 | 国产精品美女www爽爽爽 | 日韩一区二区三区在线看 | 一本久久a久久精品亚洲 | 无码一区二区三区视频 | 亚洲a一区 | 欧美视频在线播放 | 欧美看片 | 2021狠狠干 | www.中文字幕av|