PIC12C508单片机控制灯光源程序
;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
【PIC12C508单片机控制灯光源程序】
推荐阅读
- pic单片机控制HT1621 LCD程序
- PIC单片机音乐播放程序
- PIC单片机系列介绍
- 为8位MCU市场提供更多选择,意法半导体STM8L050在低成本8引脚封装内集成丰富的模拟外设和DMA控制器
- PIC单片机模拟读写24C01 EEPROM
- 单片机C51的计数器
- 深入理解晶振,单片机晶振脚原理是什么?
- 单片机晶振必要性探讨,单片机晶振常见问题分析
- pic单片机 TIMER0控制流水灯
- 单片机显示原理_LCD1602