;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
MOV LW 07H ;设定时钟参数1:256分频
OPTION
MOV LW 2CH ;输出端口设定 0,1,4输出,3输入50HZ
TRIS 6
;-------------------------------
START:
;对3端口扫描 扫描0低电位
MOV F GPI0,W
MOV WF COUNT1
BTFSC COUNT1,3
GOTO START
NEXT: ;对3端口扫描 扫描1高电位
MOV F GPI0,W
MOV WF COUNT1
BTFSS COUNT1,3
GOTO NEXT
INCF COUNT2
MOV LW 100
DECFSZ COUNT2,1
GOTO START ;------外接50HZ信号,扫描100次,延时2秒
;------------------- 单片机 灯光控制系统----------------------------------------
JB:
CLRF TMR0
MOV LW 250
MOV WF COUNT4
MOV WF COUNT5
INCF POINTER,F
MOV F POINTER,0
MOV WF POINTER1
MOV LW TABLE
ADDWF POINTER,0
CALL AA
MOV WF 6 ;返回,输出-----亮
CHANGE:
MOV F TMR0,0
MOV WF 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 ; <--- 单片机 灯光控制系统-------|
MOV LW TABLE ; |
ADDWF POINTER1,0 ; |
CALL AA ; |
MOV WF 6 ;返回上一次显示数据,输出到GP端口---灭 <--|
NOPDELAY2:
NOP
DECFSZ COUNT4,1
GOTO NOPDELAY2
GOTO CHANGE
;-----渐-----变------------ 单片机 灯光控制系统-----------------------------------
OUT:
MOV LW 9 ;取表9次
SUBWF POINTER,0
BTFSS STATUS,Z
GOTO JB
GOTO START
AA: MOV WF 2
TABLE:RETLW 2CH
RETLW 3CH
RETLW 2DH
RETLW 2EH
RETLW 2FH
RETLW 3DH
RETLW 3EH
RETLW 2CH
RETLW 3FH
ORG 1FFH
MOV WF OSCCAL
END
上一篇:PIC单片机汽车防盗器报警声(防盗器)
下一篇:PIC16C54单片机控制的电话扩音器
- 热门资源推荐
- 热门放大器推荐