; X1001.ASM (c) Copyright Daniel D. Lanciani 2002 ; All rights reserved. ; ; X1001.ASM is licensed free of charge for personal use only. ; X1001.ASM may not be distributed for profit, nor may it be ; included in products or otherwise distributed by commercial ; entities to their clients or customers without the prior ; written permission of the author. ; ; TO THE EXTENT ALLOWED BY APPLICABLE LAW, X1001.ASM IS PROVIDED ; "AS IS", WITH NO EXPRESS OR IMPLIED WARRANTY, INCLUDING, BUT ; NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND ; FITNESS FOR A PARTICULAR PURPOSE. ; ; IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW WILL THE AUTHOR BE ; LIABLE FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL ; OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO ; USE X1001.ASM EVEN IF THE AUTHOR HAS BEEN ADVISED OF THE POSSIBILITY ; OF SUCH DAMAGES. ; ; These copyright, license, and disclaimer notices must be included ; with all copies of X1001.ASM. ; simple all house code transceiver PIC for RR501 (probably works in TM751) ; ; first revision to use branch macros - no changes to binary list p=16f628 include "p16f628.inc" __CONFIG _BODEN_ON & _CP_OFF & _PWRTE_ON & _WDT_ON & _LVP_OFF & _MCLRE_OFF & _XT_OSC zcin equ 0 plout equ 1 rfin equ 3 xauoff equ 0 xalon equ 1 xon equ 2 xoff equ 3 xdim equ 4 xbri equ 5 bcnt equ 0x020 rrb0 equ 0x022 rrb1 equ 0x023 rrb2 equ 0x024 rrb3 equ 0x025 i equ 0x07f xtbcnt equ 0x120 xtbres equ 0x121 xtb0 equ 0x122 xtb1 equ 0x123 xtb2 equ 0x124 xtb3 equ 0x125 xtb4 equ 0x126 xtb5 equ 0x127 xtb6 equ 0x128 xtb7 equ 0x129 org 0x000 goto start expn andlw 0x0f clrf PCLATH addwf PCL, F retlw b'01010101' retlw b'01010110' retlw b'01011001' retlw b'01011010' retlw b'01100101' retlw b'01100110' retlw b'01101001' retlw b'01101010' retlw b'10010101' retlw b'10010110' retlw b'10011001' retlw b'10011010' retlw b'10100101' retlw b'10100110' retlw b'10101001' retlw b'10101010' flip andlw 0x0f clrf PCLATH addwf PCL, F retlw b'0000' retlw b'1000' retlw b'0100' retlw b'1100' retlw b'0010' retlw b'1010' retlw b'0110' retlw b'1110' retlw b'0001' retlw b'1001' retlw b'0101' retlw b'1101' retlw b'0011' retlw b'1011' retlw b'0111' retlw b'1111' tmap andlw 0x0f clrf PCLATH addwf PCL, F retlw b'01101001' retlw b'10101001' retlw b'01011001' retlw b'10011001' retlw b'01010110' retlw b'10010110' retlw b'01100110' retlw b'10100110' retlw b'01101010' retlw b'10101010' retlw b'01011010' retlw b'10011010' retlw b'01010101' retlw b'10010101' retlw b'01100101' retlw b'10100101' start banksel CMCON movlw 0x07 movwf CMCON banksel TRISA movlw 0xf9 movwf TRISA banksel TRISB movlw 0xff movwf TRISB banksel T1CON movlw 0x21 movwf T1CON banksel PORTA movlw 0 movwf PORTA mainloop clrwdt banksel PORTA clrf TMR1L clrf TMR1H btfss PORTA, rfin goto mainloop l1 clrwdt movlw .100 subwf TMR1H, W bz mainloop btfsc PORTA, rfin goto l1 movlw 6 subwf TMR1H, W bnc mainloop clrf TMR1L clrf TMR1H l2 clrwdt movlw 8 subwf TMR1H, W bz mainloop btfss PORTA, rfin goto l2 movlw 2 subwf TMR1H, W bnc mainloop clrf TMR1L clrf TMR1H movlw .32 movwf i l3 clrwdt movlw 2 subwf TMR1H, W bz mainloop btfsc PORTA, rfin goto l3 clrf TMR1L clrf TMR1H l4 clrwdt movlw 4 subwf TMR1H, W bz mainloop btfss PORTA, rfin goto l4 movlw 1 subwf TMR1H, W clrf TMR1L clrf TMR1H rlf rrb3, F rlf rrb2, F rlf rrb1, F rlf rrb0, F decfsz i, F goto l3 comf rrb0, W subwf rrb1, W bnz mainloop comf rrb2, W subwf rrb3, W bnz mainloop movlw 0x03 andwf rrb0, W bnz mainloop swapf rrb0, W call flip call expn movwf i swapf i, W banksel xtbcnt andlw 0x0f iorlw b'11100000' movwf xtb0 swapf i, W andlw 0xf0 movwf xtb1 banksel rrb0 movlw 0x80 subwf rrb2, W bnz not_auoff movlw 0x0c andwf rrb0, W bnz mainloop movlw xauoff goto nounit not_auoff movlw 0x90 subwf rrb2, W bnz not_alon movlw 0x0c andwf rrb0, W bnz mainloop movlw xalon goto nounit not_alon movlw 0x88 subwf rrb2, W bnz not_bri movlw 0x0c andwf rrb0, W bnz mainloop movlw xbri goto nounit not_bri movlw 0x98 subwf rrb2, W bnz not_dim movlw 0x0c andwf rrb0, W bnz mainloop movlw xdim goto nounit not_dim movlw 0x87 andwf rrb2, W bnz mainloop clrw btfsc rrb0, 2 iorlw 8 btfsc rrb2, 6 iorlw 4 btfsc rrb2, 3 iorlw 2 btfsc rrb2, 4 iorlw 1 btfsc rrb0, 3 addlw 4 call tmap movwf i swapf i, W banksel xtbcnt andlw 0x0f iorwf xtb1, F swapf i, W andlw 0xf0 iorlw b'0100' movwf xtb2 clrf xtb3 movlw .22 movwf xtbcnt movlw .64 movwf xtbres call xtrans movlw .28 movwf xtbcnt movlw .64 movwf xtbres call xtrans banksel rrb0 movlw xon btfsc rrb2, 5 movlw xoff nounit call expn movwf i banksel xtbcnt movlw 0xf0 andwf xtb1, F swapf i, W andlw 0x0f iorwf xtb1, F swapf i, W andlw 0xf0 iorlw b'1000' movwf xtb2 clrf xtb3 movlw .22 movwf xtbcnt movlw .64 movwf xtbres call xtrans movlw .28 movwf xtbcnt movlw .64 movwf xtbres call xtrans goto mainloop xtrans clrwdt banksel PORTA btfsc PORTA, zcin goto zc1 zc0 clrwdt btfss PORTA, zcin goto zc0 goto zc zc1 clrwdt btfsc PORTA, zcin goto zc1 zc banksel xtb0 btfss xtb0, 7 goto noburst banksel PORTA movlw .120 movwf bcnt burst bsf PORTA, plout clrwdt nop nop bcf PORTA, plout decfsz bcnt, F goto burst noburst banksel xtb0 rlf xtb0, W rlf xtb7, F rlf xtb6, F rlf xtb5, F rlf xtb4, F rlf xtb3, F rlf xtb2, F rlf xtb1, F rlf xtb0, F decf xtbres, F decfsz xtbcnt, F goto xtrans repos clrwdt rlf xtb0, W rlf xtb7, F rlf xtb6, F rlf xtb5, F rlf xtb4, F rlf xtb3, F rlf xtb2, F rlf xtb1, F rlf xtb0, F decfsz xtbres, F goto repos return end