十年單片機開發方案公司深圳英銳恩分享單片機燈光控制系統之PIC12C508單片機燈光控制系統源程序 。
;****************************************
;* PIC12C508單片機燈光控制系統源程序 *
;****************************************
;PIC12C508單片機燈光控制系統源程序
;以上程序使用PIC12C508單片機,內部4MHZ時鐘,4腳輸入50HZ脈沖信號,7,6,3腳(GP0,GP1,GP4端口)為輸出口。其中漸變部分是讓燈慢慢的變亮(或滅)。不知道單片機燈光控制系統程序有沒錯誤,有錯誤之處請大家多多給意見。謝謝
;程序如下:
GPI0 EQU 6
COUNT1 EQU 11
COUNT2 EQU 12
COUNT3 EQU 13
COUNT4 EQU 14
COUNT5 EQU 15
POINTER EQU 16
POINTER1 EQU 17
ORG 00H
MOVLW 07H ;設定時鐘參數1:256分頻
OPTION
MOVLW 2CH ;輸出端口設定 0,1,4輸出,3輸入50HZ
TRIS 6
;-------------------------------
START:
;對3端口掃描 掃描0低電位
MOVF GPI0,W
MOVWF COUNT1
BTFSC COUNT1,3
GOTO START
NEXT: ;對3端口掃描 掃描1高電位
MOVF GPI0,W
MOVWF COUNT1
BTFSS COUNT1,3
GOTO NEXT
INCF COUNT2
MOVLW 100
DECFSZ COUNT2,1
GOTO START ;------外接50HZ信號,掃描100次,延時2秒
;-------------------單片機燈光控制系統----------------------------------------
JB:
CLRF TMR0
MOVLW 250
MOVWF COUNT4
MOVWF COUNT5
INCF POINTER,F
MOVF POINTER,0
MOVWF POINTER1
MOVLW TABLE
ADDWF POINTER,0
CALL AA
MOVWF 6 ;返回,輸出-----亮
CHANGE:
MOVF TMR0,0
MOVWF COUNT3
SUBWF COUNT4,1
BTFSS STATUS,Z ;TMR0=250? 'N'空循環TMR0次 'Y'跳出重新開始漸變
GOTO NOPDELAY1
GOTO OUT
NOPDELAY1:
NOP
DECFSZ COUNT3,1
GOTO NOPDELAY1
DECF POINTER1,F ; <---單片機燈光控制系統-------|
MOVLW TABLE ; |
ADDWF POINTER1,0 ; |
CALL AA ; |
MOVWF 6 ;返回上一次顯示數據,輸出到GP端口---滅 <--|
NOPDELAY2:
NOP
DECFSZ COUNT4,1
GOTO NOPDELAY2
GOTO CHANGE
;-----漸-----變------------單片機燈光控制系統-----------------------------------
OUT:
MOVLW 9 ;取表9次
SUBWF POINTER,0
BTFSS STATUS,Z
GOTO JB
GOTO START
AA: MOVWF 2
TABLE:RETLW 2CH
RETLW 3CH
RETLW 2DH
RETLW 2EH
RETLW 2FH
RETLW 3DH
RETLW 3EH
RETLW 2CH
RETLW 3FH
ORG 1FFH
MOVWF OSCCAL
END
(文源網絡,侵刪)