;********************************************************************* ; ; TX_31_89S52.ASM ; ; TRANSMISSOR DE CONTROLE REMOTO DE 31 CANAIS COM AT89S52 (ON/OFF) ; USE O RECEPTOR RX_31_89S52.ASM ; AUTOR: CLAUDIO LÁRIOS DATA:07-03-2013 ; CRISTAL 12 MHZ ; MICROCONTROLADOR AT89S52 (40 PINOS) ;********************************************************************* ;RAM RES5 EQU 20H RES4 EQU 21H RES3 EQU 22H RES2 EQU 23H RES1 EQU 24H RES0 EQU 25H RESX EQU 26H ;=================================================================== ; NÚMERO SERIAL SERIAL_H EQU 0CCH SERIAL_L EQU 0AAH ;=================================================================== ;DEFINIÇÕES DE PINOS SAIDA EQU P0.7 ;PINO 32 ORG 00H INICIO: MOV P0,#07FH ;PREPARA PORTAS PARA LEITURA DOS INTERRUPTORES (MENOS P0.7 SAIDA = '0') MOV P1,#0FFH MOV P2,#0FFH MOV P3,#0FFH MOV RESX,#SERIAL_H ;NÚMERO SERIAL DO APARELHO MOV RES0,#SERIAL_L ; MOV A,P0 CPL A ;INVERTE CONTEUDO ANL A,#7FH ;APAGA RES1.7 E EVITA QUE ENTRADA ACIONE UMA TRANSMISSÃO MOV RES1,A MOV A,P1 CPL A MOV RES2,A MOV A,P2 CPL A MOV RES3,A MOV A,P3 CPL A MOV RES4,A MOV A,RES4 ADD A,RES3 ADD A,RES2 ADD A,RES1 ADD A,RES0 ADD A,RESX MOV RES5,A MOV A,RES4 CJNE A,#0H,SEG11 MOV A,RES3 CJNE A,#0H,SEG11 MOV A,RES2 CJNE A,#0H,SEG11 MOV A,RES1 CJNE A,#0H,SEG11 LJMP INICIO ;NENHUMA TECLA APERTADA SEG11: ENVIAR: ;----------------------------------------------------- PAUSA: MOV R6,#23D ;23 CLOCKS RTY: ACALL DELAY1CK DJNZ R6,RTY ;---------------------------------------------------- ACALL STARTBIT ;---------------------------------------------------- MOV R5,#56D ;QUANTIDADE DE BITS A TRANSMITIR VOLT10: CLR C MOV A,RES5 RRC A MOV RES5,A MOV A,RES4 RRC A MOV RES4,A MOV A,RES3 RRC A MOV RES3,A MOV A,RES2 RRC A MOV RES2,A MOV A,RES1 RRC A MOV RES1,A MOV A,RES0 RRC A MOV RES0,A MOV A,RESX RRC A MOV RESX,A JC EB1 ACALL BIT0 VV13: DJNZ R5,VOLT10 AJMP INICIO ;------------------------------------------------- EB1: ACALL BIT1 AJMP VV13 ;================================================= ;ROTINAS DELAY1CK: MOV R7,#140D ;500 MICROSEG DJNZ R7,$ RET BIT0: CLR SAIDA ACALL DELAY1CK SETB SAIDA ACALL DELAY1CK ACALL DELAY1CK CLR SAIDA RET BIT1: CLR SAIDA ACALL DELAY1CK ACALL DELAY1CK SETB SAIDA ACALL DELAY1CK CLR SAIDA RET STARTBIT: SETB SAIDA ACALL DELAY1CK CLR SAIDA RET END