技术热线: 4007-888-234

PIC12C508单片机控制灯光源程序

更新时间: 2019-03-23
阅读量:1689

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