当前位置:首页 > 单片机 > 单片机
[导读]这段程序是用在一款七彩灯红外遥控解码程序里,单片机使用PIC12F629,软件模拟三路PWM输出驱动红绿蓝LED分八组共24个LED,实现单LED渐明渐暗,两LED一明一暗,七彩等九种花样.有断电记忆功能.如下是解码程序.;-----------

这段程序是用在一款七彩灯红外遥控解码程序里,单片机使用PIC12F629,软件模拟三路PWM输出驱动红绿蓝LED分八组共24个LED,实现单LED渐明渐暗,两LED一明一暗,七彩等九种花样.有断电记忆功能.如下是解码程序.

;--------------------------------------------------------
;filename: 24LED_Remote.asm
;mcu: PIC12f629
;clock: 4 MHz for INTRC
;date: 2006/02/25
;writer: aLin
; IC type: PT2262IR
;Rosc: 470K
;--------------------------------------------------------


list p=pic12f629
#i nclude"p12f629.inc"

#defineB_LEDgpio,0;绿LED输出端口
#defineG_LEDgpio,1;蓝LED输出端口
#defineR_LEDgpio,2;红LED输出端口
#defineremgpio,3;GP3/MCLR,定义遥控输入端

;因为当按住PT2262的按键不放的时候
;PT2262会把编码不断的送出
;设置ENABLE位用来检测按键有没有放开过,
;如果没有放开则不再响应
;用于遥控型

#defineenableuser_reg,0;接收允许位
#defineon_offuser_reg,1;该位为0时,按花样选择键无效
#definego_nextuser_reg,2;该位为1时,跳下一段
#defineresetuser_reg,3;该位为1时,关显示
#defineunlockuser_reg,4;用于配合on_off位
;---------------------------------------------------------
;定义变量
;
r1equ20h;用于d5ms子程序
r2equ21h;用于d5ms子程序
r3equ22h;用于d320mS子程序
P_regequ23h;正脉宽时间寄存器
N_regequ24h;负脉宽时间寄存器
count1equ25h;计数器1
count2equ26h;计数器2
W_tempequ27h;W临时寄存器
user_regequ28h;用户寄存器
ee_dataequ29h;eeprom读写数据出入口
ee_addrequ2ah;eeprom读写地址入口
data_tempequ2bh;用于暂存从EEPROM读出的数所数据
index_regequ2ch;用于保存引导值
data_regequ2dh;用于保存从EEPROM读出的值

A0_addr1equ30h
A0_addr2equ31h
A1_addr1equ32h
A1_addr2equ33h
r5equ34h;用于解码延时
r6equ35h;用于解码延时
addr_set1equ36h;用于存储比较密码
addr_set2equ37h;用于存储比较密码
outputequ38h
countequ39h;接收12位编码
status_tempequ3ah;保存status的值,用于现场保护
ww_tempequ3bh;W工作寄存器,用于现场保护用
A0_data1equ3ch;用于存储比较数据D8
A0_data2equ3dh;用于存储比较数据D8
A1_data1equ3eh;用于存储比较数据D11
A1_data2equ3fh;用于存储比较数据D11
;-------------------------------------------
;定义常数
;
indexequ00h;EEData数据引导地址

;--------------------------------------------------
org 0000h

call init;调用初始化程序
goto main

;--------------------------------------------------
;中断处理入口
;TMR1溢出中断,说明按键松开时间大于等于65.536mS左右


org 0004h
movwf ww_temp;保护现场
swapf status,w
movwf status_temp

bcf intcon,gie;关所有中断
bcf t1con,tmr1on;停止TMR1
bcf pir1,tmr1if;清TMR1中断标志位
bcf enable;按键松开,清enable

swapf status_temp,w
movwf status
swapf ww_temp,f
swapf ww_temp,w

return
;--------------------------------------------------
;读出引导地址单元(00H)内容

mainmovlw index;送引导地址中转
movwf ee_addr

call ee_data_rd;调用读EEPROM程序
movf ee_data,w;读出引导地址内容

movwf index_reg;保存引导地址内容
movwf ee_addr;送待读出内容地址

call ee_data_rd
movf ee_data,w
movwf data_reg;保存读出

movf data_reg,w
addlw jumper_tab
movwf pcl

jumper_tabgoto start;跳到开始0段
goto seg1;跳到第1段
goto seg2;跳到第2段
goto seg3;跳到第3段
goto seg4;跳到第4段
goto seg5;跳到第5段
goto seg6;跳到第6段
goto seg7;跳到第7段
goto seg8;跳到第8段

;------------------------------------------------

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

为增进大家对工业以太网的认识,本文将对工业以太网的原理、工业以太网的关键技术以及工业以太网要解决的问题予以介绍。

关键字: 以太网 工业以太网 指数

为增进大家对工业以太网的认识,本文将对工业以太网网络优势、工业以太网和IOLINK的区别予以介绍。

关键字: 以太网 工业以太网 指数

为增进大家对工业以太网的认识,本文将对工业以太网的优势、工业以太网缺点、工业以太网的维护予以介绍。

关键字:

Apr. 23, 2024 ---- 随着节能成为AI推理服务器(AI Inference Server)优先考量,北美客户扩大存储产品订单,带动QLC Enterprise SSD需求开始攀升。然而,目前仅Solidi...

关键字: SSD AI 服务器

为增进大家对二极管的认识,本文将对续流二极管、续流二极管的工作原理以及二极管在工业产品中的应用予以介绍。

关键字: 二极管 指数 续流二极管

通过本文,您将了解到二极管反接是否有电压以及二极管在电子电路中的应用。

关键字: 二极管 指数 稳压电路

为增进大家对二极管的了解,本文将对ESD二极管和TVS二极管之间的区别予以介绍。

关键字: ESD TVS 二极管 指数

为增进大家对嵌入式主板的认识,本文将对嵌入式主板以及嵌入式主板常见问题及其解决方法予以介绍。

关键字: 嵌入式 指数 主板

为增进大家对嵌入式系统的认识,本文将对嵌入式系统、嵌入式系统的特点予以介绍。

关键字: 嵌入式 指数 嵌入式系统

为增进大家对嵌入式的认识,本文将对嵌入式、嵌入式工作相关的内容予以介绍。

关键字: 嵌入式 指数 嵌入式技术
关闭
关闭