51/AVR单片机技术驿站!  <在线翻译>     便利工具    特色网址   无弹窗、无插件的绿色站点...  英才招聘   学历查询  喜欢>>收藏我站 

当前位置:首页 > 单片机技术文章 > PIC单片机 > 详细内容
pic单片机静态数码管键控计数器实例
发布时间:2009/7/17  阅读次数:797  字体大小: 【】 【】【

;**************************************************
   __CONFIG 3F39H;设置配置位中振荡方式为XT,其它全部禁止或关闭
;************************************************
PCL             EQU       02H ;定义程序计数器低字节寄存器地址
STATUS       EQU       03H ;定义状态寄存器地址
PORTA         EQU       05H ;定义RA口数据寄存器地址
PORTC         EQU       07H ;定义RC口数据寄存器地址

TRISA         EQU       85H ;定义RA口方向控制寄存器
TRISC         EQU       87H ;定义RC口方向控制寄存器
ADCON1       EQU       9FH   ;定义ADC模块控制寄存器1的地址
;----------------------- STATUS
C                 EQU       0     ;定义进位标志位位地址
Z                 EQU       2     ;定义0标志位位地址
RP0             EQU       5     ;定义页选位RP0位地址
;-----------------------
COUNTER     EQU       20H   ;定义计数器寄存器
COUNT0       EQU       21H   ;定义廷时变量计数器
COUNT1       EQU       22H   ;定义廷时变量计数器
COUNT2       EQU       23H   ;定义廷时变量计数器
PORTA_B     EQU       25H   ;定义数码管位选寄存器
;--------------------
                   ORG 0000H    
                   NOP                 ;放置一条ICD必需的空操作指令
                   GOTO MAIN    
                   ORG 0008H    
;******************************************************
CONVERT1                               ;取数码管位码
                     ADDWF PCL,1   ;地址偏移量加当前PC值
TABLE1
                     RETLW 0FDH     ;第一位数码管
                     RETLW 0FEH     ;第二位数码管
                     RETLW 0F7H     ;第三位数码管
                     RETLW 0FBH     ;第四位数码管
                     RETLW 0DFH     ;第五位数码管
                     RETLW 0EFH     ;第六位数码管
;-------------------- ----------------------------------
CONVERT                                                           ;取数码管段码
                       ADDWF PCL,1                           ;地址偏移量加当前PC值
TABLE                                                                                                         
         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
                       RETLW 7FH                                     ;.
;*******************************************************
MAIN
                       CLRF PORTA                           ;初始化IO口
                       CLRF PORTC                           ;
        
                       BSF STATUS,RP0                
                       MOVLW 07H
                       MOVWF ADCON1                       ;设置RA口全部为普通数字IO口
                       MOVLW 00H
                       MOVWF TRISA                         ;设置RA,RC口全部为输出
                       MOVWF TRISC
                       BCF STATUS,RP0
;----------------------
LOOPA
                       MOVLW 0FFH                           ;让数码所有划先熄灭
                       MOVWF PORTC
                       MOVLW 00H
                       MOVWF PORTA_B                     ;位选寄存器送初值0,让第一位先显示
LOOP1
                       MOVFW PORTA_B                     ;取位选码
                       CALL CONVERT1
                       MOVWF PORTA                         ;位选码送RA口
                       CLRF COUNTER                       ;清段码寄存器,让其先显示1
                       CLRW
LOOP2
                       CALL CONVERT                     ;取段码
                       MOVWF PORTC                       ;段码送RC口显示
                       CALL DELAY                         ;
                       INCF COUNTER,1                 ;段码加1直到第10位即“。”
                       MOVLW .11                           ;
                       XORWF COUNTER,0               ;
                       BZ LOOPB                             ;
                       MOVFW COUNTER                   ;
                       GOTO LOOP2                         ;
;-------------------------
LOOPB
                       INCF PORTA_B,0                 ;位码加1直到第6位显示完又显示第一位
                       MOVWF PORTA_B                   ;
                       XORLW 06H                           ;
                       BTFSS STATUS,Z                 ;
                       GOTO LOOP1                         ;
                       GOTO LOOPA                         ;
;---------------------------------廷时子程序------
DELAY    
                       MOVLW   .2                           ;设置延时常数
         MOVWF   COUNT0
L1         
                       MOVLW   .255                       ;
         MOVWF   COUNT1
L2       
                       MOVLW   .255                       ;
         MOVWF   COUNT2
L3         
                       DECFSZ COUNT2,1               ;递减循环
         GOTO L3                               ;
         DECFSZ COUNT1,1               ;
         GOTO L2                               ;
         DECFSZ COUNT0,1               ;
         GOTO L1                               ;
         RETLW   0

;----- -----------------------------------------------
                       END

我要评论
  • 匿名发表
  • [添加到收藏夹]
  • 发表评论:(匿名发表无需登录,已登录用户可直接发表。) 登录状态:未登录
最新评论
所有评论[0]
    暂无已审核评论!

网站导航 管理登陆 ┊ 免责声明 问题反馈  友链说明
本站部分内容来自网络共享资源,如有冒犯您的权利请来信告之删除或纠正!
不得对本站进行复制、盗链或镜像,转载内容须获得同意或授权;欢迎友情链接、站务合作!

    我要报警 Alexa
 mcusy_cn#126.com (请把#改成@) 交流:522422171
本站学习交流群:138..158(高级群1-)、77930286(高级群2)、61804809(群3)
Copyright© MCUSY All Rights Reserved
本站网警备案号: WZ36040002485
  ICP备案证书号:粤ICP备09034963号