|
;PIC12C508單片機控制燈光源程序 ;以上程序使用PIC12C508單片機,內(nèi)部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 ;設(shè)定時鐘參數(shù)1:256分頻 OPTION MOVLW 2CH ;輸出端口設(shè)定 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'空循環(huá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 ;返回上一次顯示數(shù)據(jù),輸出到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 |