No.102450 作者:mcubase 邮件:mcubase@163.com ID:66985 登陆:8次 文章数:8篇 最后登陆IP:116.24.171.51 最后登陆:2007/11/7 15:50:40 注册:2007/1/4 19:51:49 财富:195 发帖时间:2007/1/31 21:46:32 发贴者IP:121.35.143.235 标题:mcubase:一款多用电子时钟设计源程序 摘要:No.102450一款多用电子时钟设计源程序 ;本源程序系`一款多用电子钟芯片'源程序,可有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次启动/停止数据 ......
>>返回讨论的主题
|