2410|5

89

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

用Timer1做的电子钟 [复制链接]


include "p16f877A.inc"                 

;************************************************
__CONFIG B'011000001100010';

                pcl                        equ                        02h
                status                equ                        3h
                z                        equ                        2h
                intcon                equ                        0bh
                porta                equ                        5h
                trisa                equ                        85h
                portd                equ                        8h
                trisd                equ                        88h
                count                equ                        29h
                count1                equ                        2ah
                rp0                    equ                        5h
                tmr1l                equ                        0eh
                tmr1h                equ                        0fh
                pir1                equ                        0ch
                pie1                equ                        8ch
                t1con                equ                        10h
                tmr1lb                equ                        0xdc
                tmr1hb                equ                        0x0b
                second                equ                        30h
                second1                equ                        31h
                minute                equ                        32h
                minute1                equ                        33h
                hour                equ                        34h
                hour1                equ                        35h
                org                        0000h
                nop
                goto                main
                org                        0004h
;***********TMR1延时子程序0。25S*************
                    bcf                        pir1,0
                        bcf                        t1con,0
                        movlw                tmr1lb
                        movwf                tmr1l
                        movlw                tmr1hb
                        movwf                tmr1h
                         bsf                        t1con,0
;open interrput
                incf        count1,1
                                movlw        0x02
                                subwf        count1,0
                                btfsc        status,z
                                goto        sec1
                                goto        exit
;two times
hou                         clrf        hour1
                                goto        Display
hou2                    incf        hour,1
                                movf        count,0
                                subwf        hour,0
                                btfsc        status,z
                                goto        hou
                                goto   exit
hou1                        clrf        minute
                            incf        hour1,1
                                movf        count,0
                                subwf        hour1,0
                                btfsc        status,z
                                goto        hou2
                                goto   exit
;hour hand
min2                        clrf        minute1
                            incf        minute,1
                                movf        count,0
                                subwf        minute,0
                                btfsc        status,z
                                goto        hou1
                                goto   exit
min1                        clrf        second
                            incf        minute1,1
                                movf        count,0
                                subwf        minute1,0
                                btfsc        status,z
                                goto        min2
                                goto   exit
;minute hand
sec2                clrf        second1
                            incf        second,1
                                movf        count,0
                                subwf        second,0
                                btfsc        status,z
                                goto        min1
                                goto   exit
sec1                    clrf        count1
                                incf        second1,1
                                movf        count,0
                                subwf        second1,0
                                btfsc        status,z
                                goto        sec2
exit                     retfie
;**************主程序***************
main        bsf                        status,rp0
                movlw                0x00
                movwf                trisa
                movwf                trisd
                bsf                        pie1,0
                bcf                        status,rp0
                movlw        0x0
                movwf        second1
                movwf        second
                movwf        minute1
                movwf        minute
                movwf        hour1
                movwf        hour
                movwf        count1
                movlw  0x0a
                movwf        count
                movlw                0x34
                movwf                t1con
                movlw                0xc0
                movwf                intcon
                movlw                tmr1lb
                movwf                tmr1l
                movlw                tmr1hb
                movwf                tmr1h
                bsf                        t1con,0
;*********Display*****************
Display              movf    hour,0
                      call        numb
                         movwf  portd
                         movlw  0x20
                            movwf  porta
                            call  delay
;顶位数显示
                         movf  hour1,0
                             call        numb
                        movwf  portd
                      movlw  0x10
                           movwf  porta
                           call  delay
;万位数显示
                      movf  minute,0
                          call        numb
                         movwf  portd
                         movlw  0x08
                  movwf  porta
                      call  delay
;千位数显示
                  movf  minute1,0
                          call        numb
                        movwf  portd
                      movlw  0x04
                           movwf  porta
                             call  delay
;百位数显示
                      movf  second,0
                      call        numb
                  movwf  portd
                  movlw  0x02
                        movwf  porta
                      call  delay
;十位数显示
              movf  second1,0
                      call        numb
                         movwf  portd
                         movlw  0x01
                             movwf  porta
                             call   delay
;个位数显示
                         goto   Display
;*********************************************
;秒针+1
;-------------------------廷时子程序----------------------------
delay                       ;子程序名,也是子程序入口地址
       movlw   0x04         ;将外层循环参数值FFH经过W
       movwf   20h          ;送入用作外循环变量的20H单元
lp0    movlw   0xff          ;将第二层循环参数值FFH经过W
       movwf   21h           ;送入用作内循环变量的21H单元
lp1    movlw   0x08          ;将内层循环参数值FFH经过W
       decfsz    21h,1       ;变量21H内容递减,若为0跳跃
       goto     lp1          ;跳跃到LP1处
       decfsz    20h,1       ;变量20H内容递减,若为0跳跃
       goto     lp0          ;跳跃到LP0处
       retlw     0           ;返回主程序
;**********读取显示信息的查表子程序*******
numb        addwf        pcl,1
                retlw        0x3f
                retlw        0x06
                retlw        0x5b
                retlw        0x4f
                retlw        0x66
                retlw        0x6d
                retlw        0x7d
                retlw        0x07
                retlw        0x7f
                retlw        0x6f
       end                   ;源程序结束

此内容由EEWORLD论坛网友windirection原创,如需转载或用于商业用途需征得作者同意并注明出处

最新回复

楼主,你的程序是有意这样写的么?歪歪的,本人强迫症,看写成这样的就别扭、。。。。。。。  详情 回复 发表于 2017-9-4 09:04
点赞 关注
 

回复
举报

89

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
哪位大神帮忙看下还有没有改进的啊
 
 

回复

613

帖子

2

TA的资源

纯净的硅(初级)

板凳
 
本帖最后由 long521 于 2017-9-4 15:46 编辑

汇编,这个程序功能也简单,就是取了值,显示一下数码管,改进的意义并不大。

点评

是的,就是想看看别人是不是有更经典的东东  详情 回复 发表于 2017-9-3 14:45
个人签名我是一头搞电子的猪,猪是一种好色的动物,猪八戒就是代表.       
 
 
 

回复

89

帖子

0

TA的资源

一粒金砂(中级)

4
 
long521 发表于 2017-9-3 14:05
汇编,这个程序功能也简单,就是取了值,显示一下数码管,改进的决义并不大。

是的,就是想看看别人是不是有更经典的东东
 
 
 

回复

943

帖子

3

TA的资源

纯净的硅(中级)

5
 
楼主,你的程序是有意这样写的么?歪歪的,本人强迫症,看写成这样的就别扭、。。。。。。。

点评

哪有啊,这是复制成这样的,你可以去我主页下载,用MPLAB打开就不会这样了  详情 回复 发表于 2017-9-4 19:01
 
 
 

回复

89

帖子

0

TA的资源

一粒金砂(中级)

6
 
雨后的梧桐 发表于 2017-9-4 09:04
楼主,你的程序是有意这样写的么?歪歪的,本人强迫症,看写成这样的就别扭、。。。。。。。

哪有啊,这是复制成这样的,你可以去我主页下载,用MPLAB打开就不会这样了
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表