控制/MCU
;PIC12C508单片机灯光控制系统源程序
;以上程序使用PIC12C508 单片机 ,内部4MHz时钟,4脚输入50HZ脉冲信号,7,6,3脚(GP0,GP1,GP4端口)为输出口。其中渐变部分是让灯慢慢的变亮(或灭)。
;程序如下:
GPI0EQU6
COUNT1EQU11
COUNT2EQU12
COUNT3EQU13
COUNT4EQU14
COUNT5EQU15
POINTEREQU16
POINTER1EQU17
ORG00H
MOV LW07H;设定时钟参数1:256分频
OPTION
MOV LW2CH;输出端口设定0,1,4输出,3输入50HZ
TRIS6
;-------------------------------
START:
;对3端口扫描扫描0低电位
MOV FGPI0,W
MOV WFCOUNT1
BTFSCCOUNT1,3
GOTOSTART
NEXT:;对3端口扫描扫描1高电位
MOV FGPI0,W
MOV WFCOUNT1
BTFSSCOUNT1,3
GOTONEXT
INCFCOUNT2
MOV LW100
DECFSZCOUNT2,1
GOTOSTART;------外接50HZ信号,扫描100次,延时2秒
;------------------- 单片机 灯光控制系统----------------------------------------
JB:
CLRFTMR0
MOV LW250
MOV WFCOUNT4
MOV WFCOUNT5
INCFPOINTER,F
MOV FPOINTER,0
MOV WFPOINTER1
MOV LWTABLE
ADDWFPOINTER,0
CALLAA
MOV WF6;返回,输出-----亮
CHANGE:
MOV FTMR0,0
MOV WFCOUNT3
SUBWFCOUNT4,1
BTFSSSTATUS,Z;TMR0=250?N空循环TMR0次Y跳出重新开始渐变
GOTONOPDELAY1
GOTOOUT
NOPDELAY1:
NOP
DECFSZCOUNT3,1
GOTONOPDELAY1
DECFPOINTER1,F;《--- 单片机 灯光控制系统-------“
MOV LWTABLE;|
ADDWFPOINTER1,0;|
CALLAA;|
MOV WF6;返回上一次显示数据,输出到GP端口---灭《--|
NOPDELAY2:
NOP
DECFSZCOUNT4,1
GOTONOPDELAY2
GOTOCHANGE
;-----渐-----变------------ 单片机 灯光控制系统-----------------------------------
OUT:
MOV LW9;取表9次
SUBWFPOINTER,0
BTFSSSTATUS,Z
GOTOJB
GOTOSTART
AA: MOV WF2
TABLE:RETLW2CH
RETLW3CH
RETLW2DH
RETLW2EH
RETLW2FH
RETLW3DH
RETLW3EH
RETLW2CH
RETLW3FH
ORG1FFH
MOV WFOSCCAL
END
来源;21ic
全部0条评论
快来发表一下你的评论吧 !