您当前的位置:五五电子网电子知识单片机-工控设备PIC单片机PIC12C508单片机控制灯光源程序 正文
PIC12C508单片机控制灯光源程序

PIC12C508单片机控制灯光源程序

点击数:7946 次   录入时间:03-04 11:55:02   整理:http://www.55dianzi.com   PIC单片机

;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




本文关键字:单片机  源程序  PIC单片机单片机-工控设备 - PIC单片机