;;;;;;;;;;;;; THIS VERSION HAS A 34KHz CARRIER list p=16f84 include "p16f84.inc" org 0x00 goto start ;Goto start address org 0x20 start bcf INTCON,7 ;Bit clear f >> disable all interrupt ,make GIE(BIT 7) =0 movlw 0x00 ;Move literal to w >> PUT 0 in W register bsf STATUS,5 ;Bit set f >> set bit 5 in stautus register, select memory bank 1 movwf TRISB ; PORT B OUTPUT movlw 0xFF movwf TRISA ; PORT A Input bcf STATUS,5 ;Bit clear f >> clr bit 5 in stautus register, select memory bank MOVLW 0x00 MOVWF PORTB FOREVER CALL ONE ;1 CALL ZERO ;2 CALL ONE ;3 CALL ONE ;4 CALL ZERO ;5 CALL ONE ;6 CALL ZERO ;7 CALL ONE ;8 CALL ZERO ;9 CALL ONE ;10 CALL ZERO ;11 CALL ONE ;12 CALL ZERO ;13 CALL ONE ;14 CALL ZERO ;15 CALL ONE ;16 CALL ZERO ;17 CALL ONE ;18 CALL ZERO ;19 CALL ONE ;20 CALL ZERO ;21 CALL ONE ;22 CALL ZERO ;23 CALL ONE ;24 CALL ZERO ;25 CALL ZERO ;26 CALL ONE ;27 CALL ZERO_1mSEC ;TAIL 19mSEC. CALL NONE ;SILENCE GOTO FOREVER ; THIS CODE IS NEARLY 0.93mSEC ----------WITH RETURN ONE MOVLW 0X02 MOVWF 0X20 Transmit_ONE MOVLW 0X10 ; THIS IS THE SECOND PART OF THE MULTIPLIER MOVWF 0X21 Transmit_ONE_SUB BSF PORTB,0 ; 1uSEC. 1 BSF PORTB,1 ; 1uSEC. 2 NOP ; 1uSEC. 3 1 NOP ; 1uSEC. 4 2 NOP ; 1uSEC. 5 3 NOP ; 1uSEC. 6 4 NOP ; 1uSEC. 7 5 NOP ; 1uSEC. 8 6 NOP ; 1uSEC. 9 7 NOP ; 1uSEC. 10 8 NOP ; 1uSEC. 11 9 NOP ; 1uSEC. 12 10 NOP ; 1uSEC. 13 11 NOP ; 1uSEC. 14 12 NOP ; 1uSEC. 15 13 BCF PORTB,0 ; 1uSEC. 14 BCF PORTB,1 ; 1uSEC. 15 NOP ; 1uSEC. 16 1 NOP ; 1uSEC. 17 2 NOP ; 1uSEC. 18 3 NOP ; 1uSEC. 19 4 NOP ; 1uSEC. 20 5 NOP ; 1uSEC. 21 6 NOP ; 1uSEC. 22 7 NOP ; 1uSEC. 23 8 NOP ; 1uSEC. 24 9 DECFSZ 0X21,1 GOTO Transmit_ONE_SUB DECFSZ 0X20,1 GOTO Transmit_ONE RETURN ;----- ; THIS CODE IS NEARLY 0.759mSEC ----------WITH RETURN ZERO MOVLW 0X02 MOVWF 0X22 Transmit_ZERO MOVLW 0X0D ; THIS IS THE SECOND PART OF THE MULTIPLIER MOVWF 0X23 Transmit_ZERO_SUB BCF PORTB,0 ; 1uSEC. 1 BCF PORTB,1 ; 1uSEC. 2 NOP ; 1uSEC. 3 1 NOP ; 1uSEC. 4 2 NOP ; 1uSEC. 5 3 NOP ; 1uSEC. 6 4 NOP ; 1uSEC. 7 5 NOP ; 1uSEC. 8 6 NOP ; 1uSEC. 9 7 NOP ; 1uSEC. 10 8 NOP ; 1uSEC. 11 9 NOP ; 1uSEC. 12 10 NOP ; 1uSEC. 13 11 NOP ; 1uSEC. 14 12 NOP ; 1uSEC. 15 13 BCF PORTB,0 ; 1uSEC. 14 BCF PORTB,1 ; 1uSEC. 15 NOP ; 1uSEC. 16 1 NOP ; 1uSEC. 17 2 NOP ; 1uSEC. 18 3 NOP ; 1uSEC. 19 4 NOP ; 1uSEC. 20 5 NOP ; 1uSEC. 21 6 NOP ; 1uSEC. 22 7 NOP ; 1uSEC. 23 8 NOP ; 1uSEC. 24 9 DECFSZ 0X23,1 GOTO Transmit_ZERO_SUB DECFSZ 0X22,1 GOTO Transmit_ZERO RETURN ;----- ; THIS CODE IS EXACTLY 65mSEC ----------WITH RETURN NONE MOVLW 0XA ; 82 MOVWF 0X24 ; THIS IS THE FIRST PART OF IT Transmit_NONE MOVLW 0XF0 ; 12 MOVWF 0X25 Transmit_NONE_SUB NOP ; 1uSEC. 1 NOP ; 1uSEC. 2 NOP ; 1uSEC. 3 NOP ; 1uSEC. 4 NOP ; 1uSEC. 5 NOP ; 1uSEC. 6 NOP ; 1uSEC. 7 NOP ; 1uSEC. 8 NOP ; 1uSEC. 9 NOP ; 1uSEC. 10 NOP ; 1uSEC. 11 NOP ; 1uSEC. 12 NOP ; 1uSEC. 13 NOP ; 1uSEC. 14 NOP ; 1uSEC. 15 NOP ; 1uSEC. 16 NOP ; 1uSEC. 17 NOP ; 1uSEC. 18 NOP ; 1uSEC. 19 NOP ; 1uSEC. 20 NOP ; 1uSEC. 21 NOP ; 1uSEC. 22 NOP ; 1uSEC. 23 NOP ; 1uSEC. 24 DECFSZ 0X25,1 GOTO Transmit_NONE_SUB DECFSZ 0X24,1 GOTO Transmit_NONE NOP RETURN ;----- ; THIS CODE IS NEARLY 19mSEC ----------WITH RETURN ZERO_1mSEC MOVLW 0X0F MOVWF 0X26 Transmit_ZERO_1mSEC MOVLW 0X2C ; THIS IS THE SECOND PART OF THE MULTIPLIER MOVWF 0X27 Transmit_ZERO_SUB_1mSEC BCF PORTB,0 ; 1uSEC. 1 BCF PORTB,1 ; 1uSEC. 2 NOP ; 1uSEC. 3 1 NOP ; 1uSEC. 4 2 NOP ; 1uSEC. 5 3 NOP ; 1uSEC. 6 4 NOP ; 1uSEC. 7 5 NOP ; 1uSEC. 8 6 NOP ; 1uSEC. 9 7 NOP ; 1uSEC. 10 NOP ; 1uSEC. 11 9 NOP ; 1uSEC. 12 10 NOP ; 1uSEC. 13 11 NOP ; 1uSEC. 14 12 NOP ; 1uSEC. 15 13 BCF PORTB,0 ; 1uSEC. 14 BCF PORTB,1 ; 1uSEC. 15 NOP ; 1uSEC. 16 1 NOP ; 1uSEC. 17 2 NOP ; 1uSEC. 18 3 NOP ; 1uSEC. 19 4 NOP ; 1uSEC. 20 5 NOP ; 1uSEC. 21 6 NOP ; 1uSEC. 22 7 NOP ; 1uSEC. 23 8 NOP ; 1uSEC. 24 9 DECFSZ 0X27,1 GOTO Transmit_ZERO_SUB_1mSEC DECFSZ 0X26,1 GOTO Transmit_ZERO_1mSEC RETURN ;----- ;;; THIS IS THE CONFIGURATION WORD THAT TELLS THE ICPROG PROGRAMMER THE <<< HS >>>>> AND TO CLEAR <<<<< WD >>>> TIMER ;--------------------------- configuration word --------------- REMEMBER THAT THIS WORD MAKE PROTUS GIVES ERROR WHEN IT RUNS BECAUSE THIS WORD IS OUT OF THE PIC MEMORY. ; SO , I WILL COMMENT IT FOR PROTUS ONLY :) ;org 0x2007 ; dw 0xFA ;osc_HS + WDT_off + pwrtmr_off + cp_off ; dw 0xFF end