M50462AP摇控器-PIC解码程序

来源:本站
导读:目前正在解读《M50462AP摇控器-PIC解码程序》的相关信息,《M50462AP摇控器-PIC解码程序》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《M50462AP摇控器-PIC解码程序》的详细说明。
简介:本文为大家提供一个M50462AP摇控器-PIC解码程序。

;*APPLICATION NOTE  E6000 ICEXPLORER ******************;* Title:                                             ;;M50462的遥控器发射码依次为:16位数据码(用户码8位+键码 ;;+前后两个码的间隔为22.5ms)                           ;;数据码0是由560US的高电平加560US的低电平构成        ;;接收时反相为500US的低电平加500US的高电平构成=1.0mS   ;;数据码1是由500US的高电平加1.5MS的高电平构成        ;;接收时反相为500US的低电平加1.5MS的高电平构成=2.0mS   ;;* Version:         00                                ;;* Last Updated:    2006.06.12                        ;;* MCU:             PIC16C74                          ;;* FOR:             www.picavr.com                    ;;******************************************************;***ROM  PCLATH.D3=0  000H-7FFH                       ;;  PCLATH.D3=1  800H-FFFH                       ;;******************************************************;** RAM    BANK0=20H---7FH STATUS RP0=0,RP1=0    ;;**        BANK1=A0H---FFH STATUS RP0=1,RP1=0    ;;**        BANK2=100H--17FH     STATUS RP1=1,RP0=0    ;;**        BANK3=180H--1FFH     STATUS RP1=1,RP0=1    ;;******************************************************;           ________________;    MCLR/VPP/TH-| 1        40 |-RB7/PGD;  RA0/AN0-| 2           39 |-RB6/PGC;        RA1/AN1-| 3        38 |-RB5; RA2/AN2/VRref--| 4           37 |-RB4; RA3/AN3/VRref+-| 5           36 |-RB3/PGM;      RA4/TOCKI-| 6           35 |-RB2;     RA5/AN4/SS-| 7           34 |-RB1;     RE0/RD/AN5-| 8           33 |-RB0/INT;     RE1/WR.AN6-| 9           32 |-VDD;     RE2/CS/AN7-| 10        31 |-VSS;      VDD-| 11          30 |-RD7/PSP7;      VSS-| 12        29 |-RD6/PSP6;     OSC1/CLKIN-| 13          28 |-RD5/PSP5;    OSC2/CLKOUT-| 14          27 |-RD4/PSP4; RC0/TISO/TICKI-| 15          26 |-RC7/RX/DT; RC1/T1OSI/CCP2-| 16          25 |-RC6/TX/CK;  RC2/CCP1-| 17          24 |-RC5/SDO;    RC3/SCK/SCL-| 18          23 |-RC4/SDA;       RD0/PSP0-| 19          22 |-RD3/PSP3;       RD1/PSP1-| 20          21 |-RD2/PSP2;    ~~~~~~~~~~~~~~~;         16F74A;****************************************************RMT          EQU  0          ;遥控接收输入脚位地址(RB。0);-------------------------------------------------BITIN        EQU  7          ;遥控接收数据位位标志;-------------------------------------------------CNT0         EQU 20H         ;用户临时寄存器1CNT1         EQU 21H         ;用户临时寄存器2CNT2         EQU 22H         ;用户临时寄存器3CNT3         EQU 23H         ;用户临时寄存器4TABADD       EQU 24H         ;数码管显示码取码用寄存器FLAGS        EQU 25H         ;显示位选标志位DISPBUF_H    EQU 26H         ;显示器高位DISPBUF_L    EQU 27H         ;显示器低位FLAGS2       EQU 28H         ;临时寄存器W_TEMP       EQU 2AH         ;W现场保护寄存器STATUS_TEMP  EQU 2BH         ;STATUS现场保护寄存器CSR0         EQU 2CH         ;遥控用户码8位寄存器CSR1         EQU 2DH         ;遥控器键码8位寄存器CSR0A        EQU 30H         ;遥控接收16位数据暂存寄存器CSR1A        EQU 31H         ;遥控接收16位数据暂存寄存器;**************************************************CONT1        EQU 7FH         ;;**************************************************            ORG 0000H            GOTO MAIN            ORG  0004H            RETFIE           ;            ORG  0008H;************************************************MAIN: CALL    RESET_       ;BANK0--BANK1清0 CLRF STATUS       ;清状态寄存器口        BSF     STATUS,RP0   ;BANK-1;------------------------------------------------        MOVLW   0FH          ;00001111设定:RB口不用上拉,分频器配给WDT        MOVWF   OPTION_      ;分频比设为1:256        MOVLW   02H          ;00000010转换结果左对齐,只选3个A/D通道RA0/AN0,RA1,RA3        MOVWF   ADCON1       ;选择VDD和VSS作参考源;------------------------------------------------        MOVLW   00H        MOVWF   TRISC        ;PORTC所有管脚设为输出        MOVLW   01H          ;        MOVWF   TRISB        ;RB0=输入        MOVLW   0FFH         ;        MOVWF   TRISA        ;;------------------------------------------------        BCF     STATUS,RP0   ;BANK-0;------------------------------------------------        MOVLW   01001001B    ;01001001选择:时钟时钟源为FOSC/8,允许ADC工作        MOVWF   ADCON0       ;通道AN1,暂时不启动转换过程        BCF     PIR1,  ADIF  ;清除A/D中断标志位;------------------------------------------------        MOVLW   00H          ;        MOVWF   PORTC        ;        MOVLW   0FFH         ;        MOVWF   PORTB        ;;*****************************************************LOOP:        NOP                  ;        NOP                  ;;*****************************************************RCV:        BTFSC      PORTB,RMT        GOTO       LOOP           ;是干扰退出        MOVLW      10        MOVWF      CNT1           ;10*256*10us        CLRF       CNT2        CLRF       CNT0RCV1:        MOVLW      170            ;低电平大于256-170=86*10US=860US错误        MOVWF      CNT0RCV1_HI:        GOTO       $+1        NOP        BTFSC      PORTB,RMT        INCF       CNT3,1        BTFSS      PORTB,RMT        CLRF       CNT3        BTFSC      CNT3,2          ;高电平大于8*10US=80US则为有效高电平        GOTO       RCV11        INCFSZ     CNT0,1        GOTO       RCV1_HI         ;低电平大于700US则是错误的        GOTO       LOOP;*************************************************RCV11:        GOTO       $+1             ;每一个循环10US        NOP        BTFSS      PORTB,RMT        INCF       CNT2,1        BTFSC      PORTB,RMT        CLRF       CNT2        BTFSC      CNT2,3          ;低电平大于8*10US=80US则为有效低电平,否则是一些干扰信号        GOTO       RCV4        DECFSZ     CNT0,1        GOTO       RCV11        DECFSZ     CNT1,1        GOTO       RCV11        GOTO       LOOP            ;高电平大于10*256*10US=25.6MS则是错误的;**************************************************RCV4:        MOVLW      4        SUBWF      CNT1,0          ;高电平小于6*256*10US=15.36MS则是错误的        BTFSC      STATUS,C        ;        GOTO       LOOP;-----------------------------------------        MOVLW      16        MOVWF      CNT2            ;接收数据共16位,8位用户码,8位控制码RCV5:        CLRF       CNT3        MOVLW      170             ;低电平大于256-170=86*10US=860US错误        MOVWF      CNT0RCV5_HI:        GOTO       $+1        NOP        BTFSC      PORTB,RMT        INCF       CNT3,1        BTFSS      PORTB,RMT        CLRF       CNT3        BTFSC      CNT3,2          ;高电平大于8*10US=80US则为有效高电平        GOTO       RCV6        INCFSZ     CNT0,1        GOTO       RCV5_HI         ;低电平大于860US则是错误的        GOTO       LOOP;---------------------------------------RCV6:        CLRF       CNT3        MOVLW      60        MOVWF      CNT1            ;高电平大于256-60=196*10US=1.96MS错误RCV6_LO:        GOTO       $+1        NOP        BTFSS      PORTB,RMT        INCF       CNT3,1        BTFSC      PORTB,RMT        CLRF       CNT3        BTFSC      CNT3,3          ;低电平大于10*8US=80US则是有效低电平        GOTO       COMPARE        INCFSZ     CNT1,1        GOTO       RCV6_LO         ;高电平大于256-60=196*10US=1.96MS错误        GOTO       LOOP;-------------------------------------COMPARE:        MOVLW      170        SUBWF      CNT0,1          ;CNT0的值减初始值等于实际低电平计数值        MOVLW      60        SUBWF      CNT1,1          ;CNT1的值减初始值等于实际高电平计数值        MOVFW      CNT1        ADDWF      CNT0,1          ;将高低电平的计数加在一起并存入CNT0,通过比较高低电平总的时间来确定是1还是0        BTFSC      STATUS,C        ;        GOTO       LOOP            ;总的值大于255(即时间大于255*10US=2.55MS)则错误;---------------------------------------        MOVLW      70        SUBWF      CNT0,0        BTFSS      STATUS,C        ;        GOTO       LOOP            ;总的时间小于70*10US=700US则是错误的        MOVLW      130             ;130*10=1.3MS        SUBWF      CNT0,0        BTFSC      STATUS,C        ;        GOTO       COMPARE_H       ;时间大于1.3MS转去确定是否1        BCF        FLAGS2,BITIN    ;时间在860US-1.3MS之间则是0        GOTO       MOVDATA         ;送数;----------------------------------------COMPARE_H:        MOVLW      150        SUBWF      CNT0,0        BTFSS      STATUS,C        ;        GOTO       LOOP            ;小于150*10US=1.5MS,则错误        MOVLW      230        SUBWF      CNT0,0        BTFSC      STATUS,C        ;        GOTO       LOOP            ;大于230*10US=2.3MS,则错误        BSF        FLAGS2,BITIN    ;时间在1.5MS-2.3MS之间则是1;----------------------------------------MOVDATA:        RLF        CSR0A,1         ;将每一位移入相应寄存器        RLF        CSR1A,1        BCF        CSR0A,0        BTFSC      FLAGS2,BITIN    ;接收当前位送入CSR0.0        BSF        CSR0A,0        DECFSZ     CNT2,1          ;是否接收完16位        GOTO       RCV5;----------------------------------------        MOVFW      CSR1A           ;将临时寄存器中的数存回相应寄存器        MOVWF      CSR0            ;        MOVFW      CSR0A           ;        MOVWF      CSR1            ;;**********************************************        MOVLW      00H             ;        SUBWF      CSR1,W          ;        BTFSC      STATUS,Z        ;        GOTO       S2              ;        MOVLW      10H             ;        SUBWF      CSR1,W          ;        BTFSC      STATUS,Z        ;        GOTO       S3              ;        MOVLW      08H             ;        SUBWF      CSR1,W          ;        BTFSC      STATUS,Z        ;        GOTO       S4              ;        MOVLW      80H             ;        SUBWF      CSR1,W          ;        BTFSC      STATUS,Z        ;        GOTO       S5              ;        MOVLW      90H             ;        SUBWF      CSR1,W          ;        BTFSC      STATUS,Z        ;        GOTO       S6              ;        MOVLW      88H             ;        SUBWF      CSR1,W          ;        BTFSC      STATUS,Z        ;        GOTO       S7              ;        MOVLW      40H             ;        SUBWF      CSR1,W          ;        BTFSC      STATUS,Z        ;        GOTO       S8              ;        MOVLW      50H             ;        SUBWF      CSR1,W          ;        BTFSC      STATUS,Z        ;        GOTO       S9              ;        MOVLW      48H             ;        SUBWF      CSR1,W          ;        BTFSC      STATUS,Z        ;        GOTO       S10             ;        GOTO       LOOP            ;S2:     BSF        PORTC,0         ;        GOTO       LOOP            ;S3:     BSF        PORTC,1         ;        GOTO       LOOP            ;S4:     BSF        PORTC,2         ;        GOTO       LOOP            ;S5:     BSF        PORTC,3         ;        GOTO       LOOP            ;S6:     BSF        PORTC,4         ;        GOTO       LOOP            ;S7:     BSF        PORTC,5         ;        GOTO       LOOP            ;S8:     BSF        PORTC,6         ;        GOTO       LOOP            ;S9:     BSF        PORTC,7         ;        GOTO       LOOP            ;S10:    CLRF       PORTC           ;        GOTO       LOOP            ;;---------------------------------------------;        SWAPF      CSR1,W          ;显示值高低位交换,先处理高位;        ANDLW      0FH             ;屏蔽掉高位;        MOVWF      DISPBUF_H       ;存入寄存器;        MOVFW      CSR1            ;显示值低位处理;        ANDLW      0FH             ;屏蔽掉高位;        MOVWF      DISPBUF_L       ;存入寄存器;        GOTO       LOOP            ;;*********************************************;******        这是清零子程式 **************;*********************************************RESET_:         BCF     STATUS,RP0        ;         MOVLW   90                ;         MOVWF   CONT1             ;         MOVLW   20H               ;         MOVWF   FSR               ;PORTBM0: CLRF    INDF              ;         CLRWDT                    ;         INCF    FSR,F             ;         DECFSZ  CONT1,F           ;         GOTO    PORTBM0           ;         MOVLW   90                ;         MOVWF   CONT1             ;         MOVLW   0A0H              ;         MOVWF   FSR               ;PORTBM1: BSF     STATUS,RP0        ;         CLRF    INDF              ;         CLRWDT                    ;         INCF    FSR,F             ;         BCF     STATUS,RP0        ;         DECFSZ  CONT1,F           ;         GOTO    PORTBM1           ;         RETLW   0                 ;;-----------------------------------------------         END                       ;;*************************************************************;5-13=E200  5-14=E210  5-15=E208  5-16=E218 ;;5-17=E204  5-18=E214  5-19=E20C  5-20=E21C ;;6-13=E280  6-14=E290  6-15=E288  6-16=E298 ;;6-17=E284  6-18=E294  6-19=E28C  6-20=E29C ;;7-13=E240  7-14=E250  7-15=E248  7-16=E258 ;;7-17=E244  7-18=E254  7-19=E24C  7-20=E25C ;;8-13=E2C0  8-14=E2D0  8-15=E2C8  8-16=E2D8 ;;8-17=E2C4  8-18=E2D4  8-19=E2CC  8-20=E2DC ;;9-13=E220  9-14=E230  9-15=E228  9-16=E238 ;;9-17=E224  9-18=E254  9-19=E22C  9-20=E23C ;;10-13=E2A0  10-14=E2B0  10-15=E2A8  10-16=E2B8 ;;10-17=E2A4  10-18=E2B4  10-19-E2AC  10-20=E2BC ;;11-13=E260  11-14=E270  11-15=E268  11-16=E278 ;;11-17=E264  11-18=E274  11-19=E26C  11-20=E27C ;;12-13=E2E0  12-14=E2F0  12-15=E2E8  12-16=E2F8 ;;12-17=E2E4  12-18=E2F4  12-19=E2EC  12-20=E2FC ;;*************************************************************

提醒:《M50462AP摇控器-PIC解码程序》最后刷新时间 2024-03-14 01:07:33,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《M50462AP摇控器-PIC解码程序》该内容的真实性请自行鉴别。