?? clock.txt
字號:
;本源程序系`一款多用電子鐘芯片'源程序,可有3開3關定時,且有受雙限觸發的定時口
;該程序硬件系采用PIC16C55芯片LP振蕩方式外接32768Hz晶振
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 ;轉標志顯示
DXSB MOVFW 0AH ;時間顯示(84)
MOVWF 7 ;輸出10時碼
BCF 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 DBCD ;9
XORLW 7FH
BTFSC 1,6
IORLW 80H ;準備`時'數據
BSF 5,3 ;關10時
MOVWF 7
BTFSS 0BH,7
CLRF 8
BCF 5,2 ;顯示時
BTFSS 6,6
BCF 8,0 ;如已關,不再停止
BTFSC 6,6
BCF 8,1 ;如已開,不再啟動
BTFSC 8,1
BSF 6,6 ;如啟動,置位開電平
DECF 4,1
SWAPF 0,0
CALL DBCD ;9
XORLW 7FH
BTFSC 1,6
IORLW 80H ;準備10分顯示數據
BSF 5,2 ;關掃描線
MOVWF 7
BTFSC 8,0
BCF 6,6 ;如停止,復位開電平
BCF 5,1 ;顯示10分
SWAPF 08H,1
MOVFW 6
ANDLW 0C0H
IORWF 08H,1
MOVFW 8
MOVWF 6 ;啟動/停止輸出
MOVFW 0
CALL HBCD ;9
XORLW 7FH
BTFSC 1,6
IORLW 80H ;準備分顯示數據
BSF 5,1 ;關掃描線
MOVWF 7
BCF 5,0 ;顯示分
NOP
NOP
NOP
INCF 4,1 ;恢復時指針
SWAPF 0,0 ;準備10時7段碼
CALL HBCD ;10
XORLW 7FH
BTFSC 1,6
IORLW 80H
MOVWF 0AH ;10時位7段顯示碼暫存于F0AH中
MOVLW 0FH
MOVWF 5
GOTO HBEGIN ;時間顯示完,轉程序結束
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
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -