PIC单片机论坛论坛展示区(非讨论区)(这个版块不能发新贴)『 乾龙盛开发板/实验板编程实例 』 → [QL200]遥控接收解码程序[PIC16F877A+汇编语言]


  共有58782人关注过本帖树形打印

主题:[QL200]遥控接收解码程序[PIC16F877A+汇编语言]

帅哥哟,离线,有人找我吗?
zhongruntian
  1楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 丐帮帮主
等级:老师(版主) 帖子:9899 积分:201298 威望:0 精华:32 注册:2005-3-13 12:01:00
[QL200]遥控接收解码程序[PIC16F877A+汇编语言]  发帖心情 Post By:2007-3-13 10:41:00


 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:

可读出任何6121或6122(CD6121/CD6122/SC6121/SC6122)及其兼容芯片的红外线遥控器的用户码、键码。
点击查看红外线遥控编码芯片6121的资料


http://www.cevx.com/bbs/index.php
支持(0中立(2反对(1单帖管理 | 引用 | 回复 回到顶部
帅哥哟,离线,有人找我吗?
zhongruntian
  2楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 丐帮帮主
等级:老师(版主) 帖子:9899 积分:201298 威望:0 精华:32 注册:2005-3-13 12:01:00
  发帖心情 Post By:2007-3-13 10:43:00

;实验目的:熟悉遥控接码解码的方法
;数码管显示解码结果:高四位为用户码,低2位为按键码
;硬件要求:拨码开关S10的第2位置ON,其他置OFF
;          拨码开关S5、S6全部置ON
;          其他拨码开关全部置OFF
 #include<p16f877a.inc>
__CONFIG _DEBUG_OFF&_CP_ALL&_WRT_HALF&_CPD_ON&_LVP_OFF&_BODEN_OFF&_PWRTE_ON&_WDT_OFF&_HS_OSC
;调试模式关闭,写保护,一半ROM可在线改写,EEPROM加密,低压编程关闭,掉电检测关闭,上电延时开,看门狗关,4M晶振HS振荡
;-------------------------
RMT            EQU 1                   ;遥控接收输入脚位地址(RA。1)
BITIN          EQU 7                   ;遥控接收数据位位标志
;-------------------------
CNT0           EQU 20H                 ;用户临时寄存器1
CNT1           EQU 21H                 ;用户临时寄存器2
CNT2           EQU 22H                 ;用户临时寄存器3
CNT3           EQU 23H                 ;用户临时寄存器4
FLAGS2         EQU 24H                 ;临时寄存器

CSR0A          EQU 25H                  ;遥控接收32位数据暂存寄存器
CSR1A          EQU 26H                  ;遥控接收32位数据暂存寄存器
CSR2A          EQU 27H                  ;遥控接收32位数据暂存寄存器
CSR3A          EQU 28H                  ;遥控接收32位数据暂存寄存器
;--------------------
               ORG 0000H                ;复位地址
               NOP                      ;放置一条ICD必须的空操作指令
               GOTO MAIN                ;跳转到主程序
               ORG  0004H               ;中断程序入口地址
               RETFIE                  ;放置一条中断返回指令,防止意外进入中断
               ORG  0008H
;------------------------------------------------
TABLE                              
               ADDWF       PCL,1         ;PC执行新地址指令, 跳到相对的地址执行?               
            RETLW       0C0H          ;0的编码(公阳极数码管)                            
               RETLW       0F9H          ;1的编码
               RETLW       0A4H          ;2的编码
               RETLW       0B0H          ;3的编码
               RETLW       99H           ;4的编码
               RETLW       92H           ;5的编码
            RETLW       082H       ;6
            RETLW       0F8H       ;7
            RETLW       080H       ;8
            RETLW       090H       ;9
               RETLW       88H           ;A
               RETLW       083H          ;b
               RETLW       0C6H          ;c
               RETLW       0A1H          ;d
               RETLW       086H          ;E
               RETLW       08EH          ;F

MAIN
               CLRF        PORTD         ;初始化IO口
               MOVLW       0FFH
               MOVWF       PORTA
               BSF         STATUS,RP0    ;设置寄存器体1
               MOVLW       07H
               MOVWF       ADCON1        ;设置RA口全部为普通数字IO口
               MOVLW       0C2H          ;将RMT设置为输入,其它所有IO口设置为输出
               MOVWF       TRISA
               CLRF        TRISD
               BCF         STATUS,RP0    ;恢复寄存器体0
               CLRF        CSR0A
               CLRF        CSR1A
               CLRF        CSR2A
               CLRF        CSR3A

;--------------------------------------------------
LOOP       
               BTFSS       PORTA,RMT     ;是否有遥控器按下
               GOTO        RCV          ;反复检测
               CALL        DISPLAY
               GOTO        LOOP                          



http://www.cevx.com/bbs/index.php
支持(2中立(0反对(1单帖管理 | 引用 | 回复 回到顶部
帅哥哟,离线,有人找我吗?
zhongruntian
  3楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 丐帮帮主
等级:老师(版主) 帖子:9899 积分:201298 威望:0 精华:32 注册:2005-3-13 12:01:00
  发帖心情 Post By:2007-3-13 10:45:00

[续2楼]

RCV
               BTFSC       PORTA,RMT
               GOTO        LOOP          ;是干扰退出
               MOVLW        .4
               MOVWF       CNT1          ;4*256*10us
               CLRF        CNT2
               CLRF        CNT0
RCV1                                     ;先检测引导码的9MS低电平
               GOTO        $+1           ;每一个循环10US
               NOP
               BTFSC       PORTA,RMT
               INCF        CNT2,1
               BTFSS       PORTA,RMT
               CLRF        CNT2
               BTFSC       CNT2,3         ;高电平大于8*10US=80US则为有效高电平,否则是一些干扰信号
               GOTO        RCV2
               DECFSZ      CNT0,1
               GOTO        RCV1
               DECFSZ      CNT1,1
               GOTO        RCV1
               GOTO        LOOP           ;低电平大于4*256*10US=10.24MS则是错误脉冲
RCV2
               MOVLW        .3            
               SUBWF       CNT1,0         ;低电平小于2*256*10US=5.12MS则是错误脉冲
               SKPNC
               GOTO        LOOP
               MOVLW       .3
               MOVWF       CNT1           ;3*256*10us
               CLRF        CNT2
               CLRF        CNT0
RCV3
               GOTO        $+1            ;每一个循环10US
               NOP
               BTFSS       PORTA,RMT
               INCF        CNT2,1
               BTFSC       PORTA,RMT
               CLRF        CNT2
               BTFSC       CNT2,3         ;低电平大于8*10US=80US则为有效低电平,否则是一些干扰信号
               GOTO        RCV4
               DECFSZ      CNT0,1        
               GOTO        RCV3
               DECFSZ      CNT1,1
               GOTO        RCV3
               GOTO        LOOP           ;高电平大于3*256*10US=7.68MS则是错误的
RCV4
               MOVLW       .3
               SUBWF       CNT1,0         ;高电平小于1*256*10US=2.56MS则是错误的
               SKPNC
               GOTO        LOOP
              
               MOVLW       .32
               MOVWF      CNT2            ;接收数据共32位,16位用户码,8位控制码加8位控制码的反码
RCV5
               CLRF       CNT3
               MOVLW      .170            ;低电平大于256-170=86*10US=860US错误
               MOVWF      CNT0 
               MOVLW      .56
               MOVWF      CNT1            ;高电平大于256-56=200*10US=2MS错误
RCV5_HI           
               GOTO       $+1
               NOP
               BTFSC      PORTA,RMT
               INCF       CNT3,1
               BTFSS      PORTA,RMT
               CLRF       CNT3
               BTFSC      CNT3,3           ;高电平大于8*10US=80US则为有效高电平
               GOTO       RCV6
               INCFSZ     CNT0,1
               GOTO       RCV5_HI          ;低电平大于860US则是错误的
               GOTO       LOOP
RCV6
               CLRF       CNT3
RCV6_LO             
               GOTO       $+1
               NOP
               BTFSS      PORTA,RMT
               INCF       CNT3,1
               BTFSC      PORTA,RMT
               CLRF       CNT3
               BTFSC      CNT3,3            ;低电平大于10*8US=80US则是有效低电平
               GOTO       COMPARE
               INCFSZ     CNT1,1     
               GOTO       RCV6_LO           ;高电平大于256-56=200*10US=2MS错误
               GOTO       LOOP



http://www.cevx.com/bbs/index.php
支持(0中立(0反对(3单帖管理 | 引用 | 回复 回到顶部
帅哥哟,离线,有人找我吗?
zhongruntian
  4楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 丐帮帮主
等级:老师(版主) 帖子:9899 积分:201298 威望:0 精华:32 注册:2005-3-13 12:01:00
  发帖心情 Post By:2007-3-13 10:45:00

COMPARE       
               MOVLW        .170
               SUBWF        CNT0,1          ;CNT0的值减初始值等于实际低电平计数值
               MOVLW        .56
               SUBWF        CNT1,1          ;CNT1的值减初始值等于实际高电平计数值
               MOVFW        CNT1
               ADDWF        CNT0,1          ;将高低电平的计数加在一起并存入CNT0,通过比较高低电平总的时间来确定是1还是0
               SKPNC
               GOTO         LOOP            ;总的值大于255(即时间大于255*10US=2.55MS)则错误
               MOVLW        .70
               SUBWF        CNT0,0
               SKPC
               GOTO         LOOP            ;总的时间小于70*10US=700US则是错误的
               MOVLW        .130            ;130*10=1.3MS
               SUBWF        CNT0,0
               SKPNC
               GOTO         COMPARE_H       ;时间大于1.3MS转去确定是否1
               BCF          FLAGS2,BITIN    ;时间在700US-1.3MS之间则是0
               GOTO         MOVDATA         ;送数
COMPARE_H
               MOVLW        .160
               SUBWF        CNT0,0
               SKPC
               GOTO         LOOP            ;小于160*10US=1.6MS,则错误
               MOVLW        .230
               SUBWF        CNT0,0
               SKPNC
               GOTO         LOOP            ;大于230*10US=2.3MS,则错误
               BSF          FLAGS2,BITIN    ;时间在1.6MS-2.3MS之间则是1           
MOVDATA
               RRF         CSR0A,1           ;将每一位移入相应寄存器
               RRF         CSR1A,1
               RRF         CSR2A,1
               RRF         CSR3A,1
               BCF         CSR0A,7
               BTFSC       FLAGS2,BITIN     ;接收当前位送入CSR0.7
               BSF         CSR0A,7
               DECFSZ      CNT2,1           ;是否接收完32位
               GOTO        RCV5
          
               COMF        CSR0A,0          ;比较键码的反码取反后是否等于键码
               XORWF       CSR1A,0
               BNZ         LOOP             ;不等于则接收到的是错误的信息
               CALL        DISPLAY          ;调用显示程序
               GOTO        LOOP


http://www.cevx.com/bbs/index.php
支持(1中立(0反对(1单帖管理 | 引用 | 回复 回到顶部
帅哥哟,离线,有人找我吗?
zhongruntian
  5楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 丐帮帮主
等级:老师(版主) 帖子:9899 积分:201298 威望:0 精华:32 注册:2005-3-13 12:01:00
  发帖心情 Post By:2007-3-14 10:55:00

[续5楼]

;*******************************显示子程序*******************************
;入口参数:CSR1A,CSR2A,CSA3A
;出口参数:无
DISPLAY   
               BANKSEL     TRISA
               CLRF        TRISA            ;A口全部设为输出
               CLRF        STATUS      
               SWAPF       CSR3A,0          ;显示用户码的最高位
               ANDLW       0FH
               CALL        TABLE
               MOVWF       PORTD
               BCF         PORTA,0
               CALL        DELAY
               BSF         PORTA,0

               MOVLW       0FH
               ANDWF       CSR3A,0          ;显示用户码的次高位
               CALL        TABLE
               MOVWF       PORTD
               BCF         PORTA,1
               CALL        DELAY
               BSF         PORTA,1

               SWAPF       CSR2A,0          ;显示用户码的次低位
               ANDLW       0FH
               CALL        TABLE
               MOVWF       PORTD
               BCF         PORTA,2
               CALL        DELAY
               BSF         PORTA,2

               MOVLW       0FH
               ANDWF       CSR2A,0          ;显示用户码的最低位
               CALL        TABLE
               MOVWF       PORTD
               BCF         PORTA,3
               CALL        DELAY
               BSF         PORTA,3

               SWAPF       CSR1A,0          ;显示键码的高位
               ANDLW       0FH
               CALL        TABLE
               MOVWF       PORTD
               BCF         PORTA,4
               CALL        DELAY
               BSF         PORTA,4

               MOVLW       0FH
               ANDWF       CSR1A,0          ;显示键码的低位
               CALL        TABLE
               MOVWF       PORTD
               BCF         PORTA,5
               CALL        DELAY
               BSF         PORTA,5

               BANKSEL     TRISA
               MOVLW       0C2H             ;恢复遥控器接收口为输入
               MOVWF       TRISA
               CLRF        STATUS
               RETURN
      
;***************************延时程序************************************   
DELAY
 MOVLW   01H                    
 MOVWF   30H
 MOVLW   0FFH
 MOVWF   31H
 DECFSZ  31H,1
 GOTO    $-1
 DECFSZ  30H,1
 GOTO    $-5
 RETURN

;**********************************************************************
               END                          ;程序结束



http://www.cevx.com/bbs/index.php
支持(0中立(2反对(1单帖管理 | 引用 | 回复 回到顶部
帅哥哟,离线,有人找我吗?
174485293
  6楼 个性首页 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小学四年级 帖子:17 积分:578 威望:0 精华:0 注册:2007-7-18 9:46:00
  发帖心情 Post By:2007-7-18 18:09:00

 GOTO       $+1
            NOP
大哥哥,这条指令是为了什么设定的?

时间吗?


支持(1中立(1反对(0单帖管理 | 引用 | 回复 回到顶部
帅哥哟,离线,有人找我吗?
WOSHIHAOREN
  7楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:初中二年级 帖子:52 积分:1263 威望:0 精华:0 注册:2006-12-8 21:20:00
好人呢!!  发帖心情 Post By:2007-7-22 8:46:00

真是好人啊,

支持(0中立(2反对(0单帖管理 | 引用 | 回复 回到顶部
帅哥哟,离线,有人找我吗?
luopppnnn
  8楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小学五年级 帖子:26 积分:860 威望:0 精华:0 注册:2006-11-23 9:15:00
  发帖心情 Post By:2007-7-23 9:14:00

不错,顶起

支持(1中立(2反对(0单帖管理 | 引用 | 回复 回到顶部
帅哥哟,离线,有人找我吗?
wellqueen
  9楼 个性首页 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 金铧电子
等级:大学四年级 帖子:728 积分:13380 威望:0 精华:0 注册:2005-10-21 17:10:00
  发帖心情 Post By:2008-5-21 11:19:00

图片点击可在新窗口打开查看


业务范围
出售PIC MDT ELAN CHIPON MEGAWIN等各类单片机及周边IC
汽车防盗、家居防盗方案技术提供及服务
按客户要求定制特殊功能的电子产品,并提供生产服务
程序解密、开发服务,代客烧录程序

业务联系 纪生:13802555343   QQ:775206054
支持(0中立(1反对(1单帖管理 | 引用 | 回复 回到顶部
帅哥哟,离线,有人找我吗?
hfei
  10楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:大学二年级 帖子:244 积分:5828 威望:0 精华:0 注册:2007-9-2 17:19:00
  发帖心情 Post By:2009-3-20 9:51:00

太深奥了,等我把简单的学会再来。


菜鸟一只!各位多指点!
支持(3中立(1反对(0单帖管理 | 引用 | 回复 回到顶部
总数 17 1 2 下一页

返回版面帖子列表(如果下面的回复窗口不可输入,请点“代码模式”再点“设计模式”)

[QL200]遥控接收解码程序[PIC16F877A+汇编语言]








签名    小提示:如果上面的回复窗口不可输入,请先点“代码模式”然后再点“设计模式”,然后就可输入回复内容了
Google 全部 本站