;*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解码程序》的相关信息,《M50462AP摇控器-PIC解码程序》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《M50462AP摇控器-PIC解码程序》的详细说明。
简介:本文为大家提供一个M50462AP摇控器-PIC解码程序。
提醒:《M50462AP摇控器-PIC解码程序》最后刷新时间 2024-03-14 01:07:33,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《M50462AP摇控器-PIC解码程序》该内容的真实性请自行鉴别。