导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→一款多用电子时钟设计源程序

* 102450: 一款多用电子时钟设计源程序

   mcubase 
mcubase发表的帖子 

 一款多用电子时钟设计源程序
;本源程序系`一款多用电子钟芯片'源程序,可有3开3关定时,且有受双限触发的定时口
;该程序硬件系采用PIC16C55芯片LP振荡方式外接32768Hz晶振
;想要完整的源码及更多产品成熟源码程序,可上单片机基地网-中国单片机方案资讯中心,mcubase.com 。
                ORG      000H       
TOP             XORLW    0FFH       
                XORLW    0FFH       
                XORLW    0FFH       
                XORLW    0FFH       
                MOVLW    08H         ;F 12H--1DH依次为K1F--G3S
                MOVWF    4          
QL              CLRF     0          
                INCF     4,1        
                CLRWDT   
                MOVFW    4          
                ANDLW    1FH        
                SKPZ     
                GOTO     QL         
                CLRF     4          
                BTFSC    6,2        
                BSF      0BH,2       ;共阳
                GOTO     CSH        
HBCD            NOP      
DBCD            ANDLW    0FH        
                CLRWDT   
                NOP      
                ADDWF    2,1        
                RETLW    01H         ;0(共阳)
                RETLW    4FH         ;1
                RETLW    12H         ;2
                RETLW    06H         ;3
                RETLW    4CH         ;4
                RETLW    24H         ;5
                RETLW    20H         ;6
                RETLW    0FH         ;7
                RETLW    00H         ;8
                RETLW    04H         ;9
                RETLW    47H         ;A(校时) 显示J
                RETLW    71H         ;B(闹铃) 显示L
                RETLW    31H         ;C
                RETLW    63H         ;D(开)
                RETLW    6AH         ;E(关)
                RETLW    7EH         ;F(杠)
CSH             CLRW                 ;初始化
                TRIS     5           ;F5,3--5,0共阳显示扫描10时--分
                BTFSS    0BH,2      
                MOVLW    0FH        
                MOVWF    5           ;关扫描
                MOVLW    0FH        
                TRIS     6          
                CLRF     6           ;关闭定时输出
                BSF      6,4         ;输出关脉冲
                MOVLW    11H         ;置显示指针,F11H--时,F10H--分
                MOVWF    4          
                MOVLW    05H         ;F1计数64分频
                OPTION   
                MOVLW    01H        
                MOVWF    1          
                MOVLW    0E2H       
                MOVWF    0FH        
HBEGIN          BCF      0BH,0       ;清1/8秒标志
                CLRWDT   
WAIT            BTFSC    1,0         ;至HXSCL-17
                GOTO     WAIT        ;1/64秒检查
                MOVFW    1          
                SKPNZ    
                INCFSZ   0FH,1       ;秒增量(逢2秒1次)
                GOTO     DZJC       
                GOTO     HSZCL       ;整分处理
DZJC            ANDLW    0FH        
                SKPZ     
                GOTO     XSCL        ;转显示处理
                BSF      0BH,0       ;0BH.0-1/8秒标志(启动/停止检测时用)
                MOVLW    0C0H       
                ANDWF    6,1         ;关(继电器)驱动脉冲
                MOVLW    0FH        
                TRIS     7          
                MOVFW    7           ;检查按键状态(0.125S-1次)
                ANDLW    0FH         ;F7,3--7,0依次是功能,时加,分加,分减键
                SKPZ     
                GOTO     HAJCL       ;转按键处理
XSCL            MOVF     0EH,1       ;F0EH-调节指针
                MOVLW    80H        
                SKPNZ    
                MOVLW    00H         ;在设定时间时,秒停闪
                BTFSS    6,3        
                MOVLW    0FFH        ;消隐时,7段码口为高阻态
                TRIS     7          
                BTFSS    0BH,2       ;共阳/共阴选择
                GOTO     DXSCL       ;转共阴显示
                BTFSC    0BH,6      
                GOTO     HBZXS       ;转标志显示
HXSB            MOVFW    0AH         ;时间显示(95)
                MOVWF    7           ;输出10时码
                BSF      5,3         ;开10时线
                CLRW     
                BTFSC    0BH,0      
                MOVFW    6           ;每0.125秒`启动/停止'检测1次
                ANDLW    03H        
                MOVWF    8          
                BTFSC    8,0        
                BCF      8,1         ;消除启动/停止竞争
                MOVFW    0          
                CALL     HBCD        ;10
                BTFSC    1,6        
                IORLW    80H         ;准备`时'数据
                BCF      5,3         ;关10时
                MOVWF    7          
                BTFSS    0BH,7      
                CLRF     8          
                BSF      5,2         ;显示时
                BTFSS    6,6        
                BCF      8,0         ;如已关,不再停止
                BTFSC    6,6        
                BCF      8,1         ;如已开,不再启动
                BTFSC    8,0        
                BCF      6,6         ;如停止,复位开电平
                DECF     4,1        
                SWAPF    0,0        
                CALL     HBCD        ;10
                BTFSC    1,6        
                IORLW    80H         ;准备10分显示数据
                BCF      5,2         ;关扫描线
                MOVWF    7          
                BTFSC    8,1        
                BSF      6,6         ;如启动,置位开电平
                BSF      5,1         ;显示10分
                SWAPF    08H,1      
                MOVFW    6          
                ANDLW    0C0H       
                IORWF    08H,1      
                MOVFW    08H        
                MOVWF    6           ;启动/停止输出
                NOP      
                MOVFW    0          
                CALL     HBCD        ;10
                BTFSC    1,6        
                IORLW    80H         ;准备分显示数据
                BCF      5,1         ;关扫描线
                MOVWF    7          
                BSF      5,0         ;显示分
                NOP      
                NOP      
                NOP      
                NOP      
                NOP                 
                INCF     4,1         ;恢复时指针
                SWAPF    0,0         ;准备10时7段码
                CALL     HBCD        ;10
                BTFSC    1,6        
                IORLW    80H        
                MOVWF    0AH         ;10时位7段显示码暂存于F0AH中
                CLRF     5          
                GOTO     HBEGIN      ;时间显示完,转程序结束
HBZXS           RRF      0EH,0       ;调节指针(F0EH)除以2(71)
                ANDLW    0FH        
                MOVWF    1FH        
                SKPNZ    
                MOVLW    0AH         ; J 7段码地址
                CALL     HBCD        ;(10)标志指示1(10分位)
                MOVWF    7           ;此时可能显示[J 1 2 3]
                BSF      5,1         ;开(10分位)显示
                MOVFW    6          
                ANDLW    03H        
                MOVWF    8           ;启动/停止数据暂存入F8中
                NOP      
                MOVLW    0DH         ; U 地址
                BTFSC    0EH,0      
                MOVLW    0EH         ; n 地址
                MOVF     1FH,1      
                SKPNZ    
                MOVLW    0FH         ; - 地址
                CALL     HBCD        ;10
                BCF      5,1         ;关10分位
                MOVWF    7          
                BSF      5,0         ;开分位,可能显示[- U n]
                BTFSS    0BH,0      
                CLRF     8           ;每0.125秒取1次启动/停止数据
                BTFSS    0BH,7      
                CLRF     8          
                BTFSC    8,0        
                BCF      8,1         ;免除启/停竞争(停止优先)
                BTFSC    6,6        
                BCF      8,1         ;如已开,则清启动位
                BTFSS    6,6        
                BCF      8,0         ;如已关,则清停止位
                SWAPF    8,1        
                BTFSC    8,5        
                BSF      6,6         ;如启动,置位开电平
                BTFSC    8,4        
                BCF      6,6         ;如停止,复位开电平
                MOVFW    6           ;控制输出
                ANDLW    0C0H       
                IORWF    08H,1      
                MOVFW    08H        
                MOVWF    6          
                CLRF     5           ;标志显示完
                GOTO     HBEGIN     
DXSCL           BTFSC    0BH,6      
                GOTO     DBZXS       ;转标志显示
DBZXS           RRF      0EH,0       ;调节指针(F0EH)除以2(66)
                ANDLW    0FH        
                MOVWF    1FH        
                SKPNZ    
                MOVLW    0AH         ; J 7段码地址
                CALL     DBCD        ;标志指示1(10分位)
                XORLW    7FH        
                MOVWF    7           ;此时可能显示[J 1 2 3]
                BCF      5,1         ;开(10分位)显示
                MOVFW    6          
                ANDLW    03H        
                MOVWF    8          
                MOVLW    0DH         ; U 地址
                BTFSC    0EH,0      
                MOVLW    0EH         ; n 地址
                MOVF     1FH,1      
                SKPNZ    
                MOVLW    0FH         ; - 地址
                CALL     HBCD        ;10
                XORLW    7FH        
                BSF      5,1         ;关10分位
                MOVWF    7          
                BCF      5,0         ;开分位,可能显示[- U n]
                BTFSC    0BH,0      
                CLRF     8           ;每0.125秒取1次启动/停止数据
                BTFSS    0BH,7      
                CLRF     8           ;启动/停止数据暂存入F8中
                BTFSC    8,0        
                BCF      8,1         ;免除启/停竞争
                BTFSC    6,6        
                BCF      8,1         ;如已开,则清启动位
                BTFSS    6,6        
                BCF      8,0         ;如已关,则清停止位
                SWAPF    8,1        
                BTFSC    8,5        
                BSF      6,6         ;如启动,置位开电平
                BTFSC    8,4        
                BCF      6,6         ;如停止,复位开电平
                MOVFW    6          
                ANDLW    0C0H       
                IORWF    8,1         ;准备输出控制数据
                MOVFW    8          
                MOVWF    6          
                NOP      
                BSF      5,0        
                MOVLW    0FH        
                MOVWF    5           ;标志显示完
                GOTO     HBEGIN     
HSZYS           CLRWDT   
                BTFSS    1,0        
                GOTO     HSZYS      
                GOTO     HBEGIN     
HSZCL           MOVLW    0E2H        ;秒置初值
                MOVWF    0FH        
                INCF     10H,1       ;分加1
                MOVLW    06H         ;分(BCD调整)
                ADDWF    10H,0      
                SKPNDC   
                MOVWF    10H        
                MOVLW    60H        
                SUBWF    10H,0      
                SKPC     
                GOTO     HDSCL       ;转定时处理
                CLRF     10H         ;分清0
                INCF     11H,1       ;时加1
                MOVLW    06H         ;时(BCD调整)
                ADDWF    11H,0      
                SKPNDC   
                MOVWF    11H        
                MOVLW    24H        
                SUBWF    11H,0      
                SKPNC    
                CLRF     11H        
HDSCL           CLRF     1EH         ;定时处理
                CLRF     1FH        
                MOVFW    12H         ;K1
                XORWF    10H,0      
                SKPZ     
                GOTO     HBJ2       
                MOVFW    13H        
                XORWF    11H,0      
                SKPNZ    
                INCF     1EH,1      
HBJ2            MOVFW    14H         ;G1
                XORWF    10H,0      
                SKPZ     
                GOTO     HBJ3       
                MOVFW    15H        
                XORWF    11H,0      
                SKPNZ    
                INCF     1FH,1      
HBJ3            MOVFW    16H         ;K2
                XORWF    10H,0      
                SKPZ     
                GOTO     HBJ4       
                MOVFW    17H        
                XORWF    11H,0      
                SKPNZ    
                INCF     1EH,1      
HBJ4            CLRWDT   
                MOVFW    18H         ;G2
                XORWF    10H,0      
                SKPZ     
                GOTO     HBJ5       
                MOVFW    19H        
                XORWF    11H,0      
                SKPNZ    
                INCF     1FH,1      
HBJ5            MOVFW    1AH         ;K3
                XORWF    10H,0      
                SKPZ     
                GOTO     HBJ6       
                MOVFW    1BH        
                XORWF    11H,0      
                SKPNZ    
                INCF     1EH,1      
HBJ6            MOVFW    1CH         ;G3
                XORWF    10H,0      
                SKPZ     
                GOTO     HBJE       
                MOVFW    1DH        
                XORWF    11H,0      
                SKPNZ    
                INCF     1FH,1      
HBJE            MOVFW    1FH         ;调开关数据
                SUBWF    1EH,0       ;开减关
                SKPNZ    
                GOTO     HSZYS       ;相等,非开非关,转结束
                BSF      0BH,7       ;0BH,7开关标志
                SKPC     
                BCF      0BH,7      
                CLRW     
                BTFSC    0BH,7      
                MOVLW    80H        
                MOVWF    6           ;定时开关输出
                BTFSS    6,7        
                BSF      6,4         ;关脉冲
                GOTO     HSZYS       ;时钟程序完
HAJCL           MOVWF    08H         ;键口数据送08H寄存器暂存
                BTFSC    08H,3      
                GOTO     HTGZZ       ;转调整指针
                BTFSC    08H,2      
                GOTO     HSJ1        ;转时加1(或开)
                BTFSC    08H,1      
                GOTO     HFJ1        ;转分加1(或关)
                BTFSC    08H,0      
                GOTO     HFQ1        ;转分去1(或关)
                GOTO     HSZYS      
HTGZZ           BSF      0BH,6       ;关标志显示
                INCF     0EH,1       ;'调节指针'增量
                BTFSS    0EH,3      
                GOTO     QZZ        
                CLRF     0EH        
                BCF      0BH,6       ;当0EH(调节指针)=0,清标志显示
QZZ             MOVFW    0EH        
                SKPZ     
                DECF     0EH,0      
                MOVWF    08H        
                CLRC     
                RLF      08H,1      
                MOVLW    11H        
                ADDWF    08H,0      
                MOVWF    4          
                GOTO     HSZYS          
                END    




发表时间:2007年1月31日21:46:32

  
回复该帖

本主题共有 1 帖,分页:>>>>>该主题的所有内容[1]条

 *树形目录 只列出部分跟帖的标题以及简单的摘要信息 该主题的部分跟帖如下:

[上一篇帖子]:真心请教UCOS2移植51的问题请问在移植ucos2到51的过程中,编译时出现OSRDYTBL、OS
[下一篇帖子]:[求助]哪儿有适合初学者的实验套件?我很想学习单片机,好几次想自己看书学习,都没能成功,这次碰到了老