;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