中国IEEE
关于我们 | 会员登陆 | 收藏本站 | 留 言 薄
 

 | 网站首页 | 电子知识 | 单片机知识 | 电路设计 | 微电子技术 | SCADA系统 | 资源下载 | 给我留言 | 视频教程 | ieee | 
热门搜索关键字: 单片机教程 | 三极管微电子 |  C语言汇编语言SCADA元器件IEEE |
cnieee.com baidu
栏目导航  
栏目更新推荐  
·经过测试的PIC单片机电子钟汇编程序
·PIC单片机C语言编程实例
·PIC单片机程序设计基础
·AD7416+PIC16F84+PC机构建的测温系…
·PIC系列单片机数据存储器的特点和功…
·Microchpip带128K闪存的单片机
·PIC16C55控制多用电子钟的工作原理
·PIC系列单片机数据存储器的功能介绍
点击TOP(10)  
  • 此栏目下没有热点文章
  • 图片文章  

    PIC单片机程序设计基…

    AD7416+PIC16F84+PC…

    PIC系列单片机数据存…

    PIC系列单片机在消毒…
     
    您现在的位置: 中国IEEE中国电气电子工程师网 >> 单片机知识 >> 硬件知识 >> pic单片机 >> 正文

    经过测试的PIC单片机电子钟汇编程序
    文章来源:东哥单片机网 点击数: 更新时间:2008-7-5 【字体:
    (欢迎光临中国IEEE,希望本文能对您有所帮助http://www.cnieee.com)


    相关文章:

    没有相关文章

  • 上一个文章:

  • 下一个文章: 没有了
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
     
    关于〖经过测试的PIC单片机电子钟汇编程序〗的最新评论:

    TMR0        EQU    01H          ;定义定时器/计数器0寄存器地址
    PCL         EQU    02H          ;定义程序计数器低字节寄存器地址
    STATUS      EQU    03H          ;定义状态寄存器地址
    PORTA       EQU    05H          ;定义RA口数据寄存器地址
    TRISA       EQU    85H          ;定义RA口方向控制寄存器地址
    PORTB       EQU    06H          ;定义RB的数据寄存器地址
    TRISB       EQU    86H          ;定义RB的方向控制寄存器地址
    PORTC       EQU    07H          ;定义RC口数据寄存器地址
    TRISC       EQU    87H          ;定义RC口方向控制寄存器地址
    PORTD       EQU    08H          ;定义RD口数据寄存器地址
    TRISD       EQU    88H          ;定义RD口方向控制寄存器地址
    PORTE       EQU    09H          ;定义RE口数据寄存器地址
    TRISE       EQU    89H          ;定义RE口方向控制寄存器地址
    INTCON      EQU    0BH          ;定义中断控制寄存器地址
    OPTION_REG  EQU    81H          ;定义选项寄存器地址
    ADCON1      EQU    9FH          ;定义ADC模块控制寄存器1的地址

    C           EQU    0            ;定义进位标志位的位地址
    Z           EQU    2            ;定义0标志位的位地址
    RP0         EQU    5            ;定义状态寄存器中的页选位RP0
    W           EQU    0            ;定义传送目标寄存器为W的指示位
    F           EQU    1            ;定义传送目标寄存器为RAM的指示位
    T0IF        EQU    2            ;定义TMR0中断标志位的位地址
    T0IE        EQU    5            ;定义TMR0中断使能位的位地址
    INTE        EQU    4            ;定义外部中断使能位的位地址
    INTF        EQU    1            ;定义外部中断标志位的位地址
    RBIF        EQU    0            ;
    DC          EQU    1            ;
    RBIE        EQU    3            ;
    GIE         EQU    7            ;
    PSA         EQU    3            ;
    RB4         EQU    4            ;
    RB5         EQU    5            ;
    RB6         EQU    6            ;
    RB7         EQU    7            ;

    FLAG        EQU   20H           ;
    N1          EQU   D'2'          ;
    N2          EQU   D'30'         ;
    DATA1       EQU   21H           ;
    DATA2       EQU   22H           ;
    DATA3       EQU   23H           ;
    DATA4       EQU   24H           ;
    BUF         EQU   28H           ;
    BUF1        EQU   29H           ;
    BUF2        EQU   2AH           ;
    BUF3        EQU   2BH           ;
    BUF4        EQU   2CH           ;
    BUF5        EQU   2DH           ;
    CNT1        EQU   2EH           ;
    CNT2        EQU   2FH           ;
    CNT3        EQU   30H           ;
    CNT4        EQU   31H           ;
    PORTB_B     EQU   27H           ;
    PORTC_B     EQU   32H           ;
    OPTION_TEMP EQU   33H           ;
    PCLATH_B    EQU   34H           ;
    W_TEMP      EQU   7FH           ;W现场保护寄存器
    STATUS_TEMP EQU   35H           ;STATUS现场保护寄存器
    BUF_TEMP    EQU   36H           ;
    BUF_TEMP1   EQU   37H           ;
    BUF1_TEMP   EQU   38H           ;
    BUF1_TEMP1  EQU   39H           ;
    PORTB_TEMP  EQU   3AH           ;
    PORTD_B     EQU   3BH           ;
    BUF2_TEMP   EQU   3CH           ;
    BUF2_TEMP1  EQU   3DH           ;
    BUFF        EQU   3EH           ;


             ORG     000H           ;
             NOP                    ;放置一条ICD必需的空操作指令
             GOTO    MAIN           ;
             ORG     004H           ;
             GOTO    INTSERV        ;        
             ORG     008H           ;
    MAIN    
             BSF     STATUS,RP0     ;设置寄存器体1
             MOVLW   07H            ;PSA=0 for tmr0, PS2,PS1,PS0=1 分频比1:256
             MOVWF   OPTION_REG     ;预分频器分配给定时器0,开启RB口弱上拉.
             MOVLW   07H            ;
             MOVWF   ADCON1         ;设置RA口全部为普通数字IO口
             MOVLW   00H            ;
             MOVWF   TRISC          ;RC口全部为输出
             MOVWF   TRISD          ;RD口全部为输出
             MOVLW   0FFH           ;
             MOVWF   TRISB          ;RB口全部为输入
             BCF     STATUS,RP0     ;恢复寄存器体0
    ;**********************************  
    KEYLOOP
             CALL   DISP2           ;
             MOVF   PORTB,W         ;
             ANDLW  B'00110111'     ;
             XORLW  B'00110111'     ;
             BTFSC  STATUS,Z        ;
             GOTO   KEYLOOP         ;
             CALL   delay10ms       ;
             MOVF   PORTB,W         ;
             ANDLW  B'00110111'     ;
             XORLW  B'00110111'     ;
             BTFSC  STATUS,Z        ;
             GOTO   KEYLOOP         ;
    ;*********************************
             BTFSS  PORTB, 0        ;
             GOTO   KEY0            ;
             BTFSS  PORTB, 1        ;
             GOTO   KEY1            ;
             BTFSS  PORTB, 2        ;
             GOTO   KEY2            ;
             BTFSS  PORTB, 4        ;
             GOTO   KEY3            ;
             BTFSS  PORTB, 5        ;
             GOTO   KEY4            ;
             GOTO   KEYLOOP         ;
    ;*********************************
    KEY0     MOVLW  0A0H            ;
             MOVWF  INTCON          ;
             MOVLW  .16             ;
             MOVWF  CNT2            ;
             MOVLW  .12             ;
             MOVWF  TMR0            ;
             GOTO   WAITREL         ;
    ;*********************************
    KEY4     MOVLW  00H             ;
             MOVWF  INTCON          ;
             GOTO   WAITREL         ;
    ;*********************************
    KEY1     INCF   BUF1, 1         ;
             MOVF   BUF1, W         ;
             ANDLW  0FH             ;
             XORLW  0AH             ;
             BTFSC  STATUS,Z        ;
             GOTO   MIN_L           ;
             GOTO   WAITREL         ;
    MIN_L    MOVF   BUF1, W         ;
             ANDLW  0F0H            ;
             MOVWF  BUF1            ;
             GOTO   WAITREL         ;
    KEY2     MOVLW  10H             ;
             ADDWF  BUF1, F         ;
             MOVF   BUF1, W         ;
             ANDLW  0F0H            ;
             XORLW  60H             ;
             BTFSC  STATUS,Z        ;
             GOTO   MIN_H           ;
             GOTO   WAITREL         ;
    MIN_H    MOVF   BUF1, W         ;
             ANDLW  0FH             ;
             MOVWF  BUF1            ;
             GOTO   WAITREL         ;

    KEY3     INCF   BUF2, 1         ;
             MOVF   BUF2, W         ;
             ANDLW  0FH             ;
             XORLW  0AH             ;
             BTFSC  STATUS,Z        ;
             GOTO   HOUR_L          ;
             GOTO   HOUR_H          ;
    HOUR_L   MOVF   BUF2, W         ;
             ANDLW  0F0H            ;
             MOVWF  BUF2            ;
             MOVLW  10H             ;
             ADDWF  BUF2, F         ;
             MOVF   BUF2, W         ;
             ANDLW  0F0H            ;
             XORLW  20H             ;
             BTFSC  STATUS,Z        ;
             GOTO   HOUR_H          ;
    HOUR_H   MOVF   BUF2, W         ;
             XORLW  24H             ;
             BTFSC  STATUS,Z        ;
             CLRF   BUF2            ;
    WAITREL  CALL   DISP2           ;
             MOVF   PORTB,W         ;
             ANDLW  B'00110111'     ;
             XORLW  B'00110111'     ;
             BTFSC  STATUS,Z        ;
             GOTO   KEYLOOP1        ;
             GOTO   WAITREL         ;
    KEYLOOP1 CALL   delay10ms       ;
             GOTO   KEYLOOP         ;
    ;*********************************
    INTSERV
             MOVWF   W_TEMP         ;
             SWAPF   STATUS,W       ;
             CLRF    STATUS         ;
             MOVWF   STATUS_TEMP    ;

             BCF     INTCON,T0IF    ;
             DECFSZ  CNT2,1         ;
             GOTO    KEYOUT         ;
             MOVLW   .16            ;
             MOVWF   CNT2           ;
             INCF    BUF,1          ;
             MOVF    BUF,W          ;
             ANDLW   0FH            ;
             XORLW   0AH            ;
             BTFSS   STATUS,Z       ;
             GOTO    KEYOUT         ;
             MOVF    BUF,W          ;
             ANDLW   0F0H           ;
             MOVWF   BUF            ;
             MOVLW   10H            ;
             ADDWF   BUF,1          ;
             MOVF    BUF,W          ;
             ANDLW   0F0H           ;
             XORLW   60H            ;
             BTFSS   STATUS,Z       ;
             GOTO    KEYOUT         ;
             CLRF    BUF            ;

             INCF    BUF1,1         ;
             MOVF    BUF1,W         ;
             ANDLW   0FH            ;
             XORLW   0AH            ;
             BTFSS   STATUS,Z       ;
             GOTO    KEYOUT         ;
             MOVF    BUF1,W         ;
             ANDLW   0F0H           ;
             MOVWF   BUF1           ;
             MOVLW   10H            ;
             ADDWF   BUF1,1         ;
             MOVF    BUF1,W         ;
             ANDLW   0F0H           ;
             XORLW   60H            ;
             BTFSS   STATUS,Z       ;
             GOTO    KEYOUT         ;
             CLRF    BUF1           ;

             INCF    BUF2,1         ;
             MOVF    BUF2,W         ;
             ANDLW   0FH            ;
             XORLW   0AH            ;
             BTFSS   STATUS,Z       ;
             GOTO    HOUR_OUT       ;
             MOVF    BUF2,W         ;
             ANDLW   0F0H           ;
             MOVWF   BUF2           ;
             MOVLW   10H            ;
             ADDWF   BUF2,1         ;
             MOVF    BUF2,W         ;
             ANDLW   0F0H           ;
             XORLW   20H            ;
             BTFSS   STATUS,Z       ;
             GOTO    HOUR_OUT       ;
    HOUR_OUT MOVF    BUF2, W        ;
             XORLW   24H            ;
             BTFSC   STATUS,Z       ;
             CLRF    BUF2           ;

    KEYOUT   MOVLW   .12            ;
             MOVWF   TMR0           ;
             SWAPF   STATUS_TEMP,W  ;
             MOVWF   STATUS         ;
             SWAPF   W_TEMP,F       ;
             SWAPF   W_TEMP,W       ;
             RETFIE                 ;
    ;*********************************
    ;        显示子程序             ;
    ;*********************************
    DISP2    MOVF   BUF,  W         ;
             ANDLW  0FH             ;
             CALL   convert         ;
             MOVWF  PORTC           ;
             BCF    PORTD,0         ;
             CALL   DELAY           ;
             BSF    PORTD,0         ;

             MOVF   BUF, W          ;
             MOVWF  BUF_TEMP        ;
             SWAPF  BUF_TEMP,W      ;
             ANDLW  0FH             ;
             CALL   convert         ;
             MOVWF  PORTC           ;
             BCF    PORTD,1         ;
             CALL   DELAY           ;
             BSF    PORTD,1         ;

             MOVF   BUF1, W         ;
             ANDLW  0FH             ;
             CALL   convert         ;
             MOVWF  PORTC           ;
             BCF    PORTD,2         ;
             CALL   DELAY           ;
             BSF    PORTD,2         ;

             MOVF   BUF1, W         ;
             MOVWF  BUF1_TEMP       ;
             SWAPF  BUF1_TEMP,W     ;
             ANDLW  0FH             ;
             CALL   convert         ;
             MOVWF  PORTC           ;
             BCF    PORTD,3         ;
             CALL   DELAY           ;
             BSF    PORTD,3         ;

             MOVF   BUF2, W         ;
             ANDLW  0FH             ;
             CALL   convert         ;
             MOVWF  PORTC           ;
             BCF    PORTD,4         ;
             CALL   DELAY           ;
             BSF    PORTD,4         ;

             MOVF   BUF2, W         ;
             MOVWF  BUF2_TEMP       ;
             SWAPF  BUF2_TEMP,W     ;
             ANDLW  0FH             ;
             CALL   convert         ;
             MOVWF  PORTC           ;
             BCF    PORTD,5         ;
             CALL   DELAY           ;
             BSF    PORTD,5         ;
             RETURN                 ;
    ;*********************************
    DELAY                           ;{2+[2+(1+2)*(DATA2-1)+2+1+2]*(DATA1-1)+2+2}=0.382MS
             MOVLW  N1              ;(1)
             MOVWF  DATA1           ;(1)
    DEL1     MOVLW  N2              ;(1)
             MOVWF  DATA2           ;(1)
    DEL2     DECFSZ DATA2,1         ;(1\2)DATA2-1=0?
             GOTO   DEL2            ;(2)
             DECFSZ DATA1,1         ;(1\2)DATA1-1=0?
             GOTO   DEL1            ;(2)
             RETURN                 ;(2)
    ;;********************************
    delay10ms
             MOVLW  .4              ;将外层循环参数值送到DATA3
             MOVWF  DATA3           ;
    LP0
             MOVLW  .3              ;将内层循环参数值送到DATA4
             MOVWF  DATA4           ;
    LP1      CALL   DISP2           ;(382*4+44)uS=1.572MS
             DECFSZ DATA4,1         ;变量DATA4内容递减,若为0则跳跃
             GOTO   LP1             ;跳转到LP1
             DECFSZ DATA3,1         ;变量DATA3内容递减,若为0则跳跃
             GOTO   LP0             ;跳转到LP0
             RETURN                 ;返回主程序
    ;**********************************
    convert
             ADDWF   PCL,1          ;
    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   90H            ; 9
             END


     

    | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明网站地图 | 名站导航 | 管理登录 | 
    本站资源部分来自互联网,如侵权,将予以删除; 欢迎同类网站做友情链接,QQ留言单片机交流群:14084521(满)59905828,2786387

    中国IEEE 中国电气电子工程师网 版权所有 鲁ICP备08006092号