;THE PROG FOR serial DTMF Encoder HT9200A FOR DTMF TX BY SD DWIVEDI 22.09.09 ;;########################################################################## HTCS EQU P1.0 HTCLK EQU P1.1 HTDIN EQU P1.2 ;;***********************RAM DATA COUNTER EQU 20H NOMBER EQU 21H COUNT EQU 22H ROUNDCNT EQU 23H ;;###################################################### ORG 00H SJMP START ORG 0050H START: ACALL DELAY0 WRITEHT:MOV A,#01 MOV COUNTER,#5 CLR HTCS ;MAKE CS L NOP NOP SEND1: SETB HTCLK ACALL DELAY0 RRC A ;SIFT 4 BIT RIGHT THROUGH C MOV HTDIN,C CLR HTCLK ;MAKE CLK H FOR DONE ACALL DELAY0 DJNZ COUNTER,SEND1 MOV A,#02 MOV COUNTER,#5 SEND2: SETB HTCLK ACALL DELAY0 RRC A ;SIFT 4 BIT RIGHT THROUGH C MOV HTDIN,C CLR HTCLK ;MAKE CLK H FOR DONE ACALL DELAY0 DJNZ COUNTER,SEND2 MOV A,#3 MOV COUNTER,#5 SEND3:SETB HTCLK ACALL DELAY0 RRC A ;SIFT 4 BIT RIGHT THROUGH C MOV HTDIN,C CLR HTCLK ;MAKE CLK H FOR DONE ACALL DELAY0 DJNZ COUNTER,SEND3 MOV A,#04 MOV COUNTER,#5 SEND4: SETB HTCLK ACALL DELAY0 RRC A ;SIFT 4 BIT RIGHT THROUGH C MOV HTDIN,C CLR HTCLK ;MAKE CLK H FOR DONE ACALL DELAY0 DJNZ COUNTER,SEND4 MOV A,#05 MOV COUNTER,#5 SEND5: SETB HTCLK ACALL DELAY0 RRC A ;SIFT 4 BIT RIGHT THROUGH C MOV HTDIN,C CLR HTCLK ;MAKE CLK H FOR DONE ACALL DELAY0 DJNZ COUNTER,SEND5 MOV A,#06 MOV COUNTER,#5 SEND6: SETB HTCLK ACALL DELAY0 RRC A ;SIFT 4 BIT RIGHT THROUGH C MOV HTDIN,C CLR HTCLK ;MAKE CLK H FOR DONE ACALL DELAY0 DJNZ COUNTER,SEND6 MOV A,#07 MOV COUNTER,#5 SEND7: SETB HTCLK ACALL DELAY0 RRC A ;SIFT 4 BIT RIGHT THROUGH C MOV HTDIN,C CLR HTCLK ;MAKE CLK H FOR DONE ACALL DELAY0 DJNZ COUNTER,SEND7 MOV A,#08 MOV COUNTER,#5 SEND8: SETB HTCLK ACALL DELAY0 RRC A ;SIFT 4 BIT RIGHT THROUGH C MOV HTDIN,C CLR HTCLK ;MAKE CLK H FOR DONE ACALL DELAY0 DJNZ COUNTER,SEND8 MOV A,#09 MOV COUNTER,#5 SEND9: SETB HTCLK ACALL DELAY0 RRC A ;SIFT 4 BIT RIGHT THROUGH C MOV HTDIN,C CLR HTCLK ;MAKE CLK H FOR DONE ACALL DELAY0 DJNZ COUNTER,SEND9 MOV A,#0AH MOV COUNTER,#5 SEND0: SETB HTCLK ACALL DELAY0 RRC A ;SIFT 4 BIT RIGHT THROUGH C MOV HTDIN,C CLR HTCLK ;MAKE CLK H FOR DONE ACALL DELAY0 DJNZ COUNTER,SEND0 MOV A,#0BH MOV COUNTER,#5 SENDAT:SETB HTCLK ACALL DELAY0 RRC A ;SIFT 4 BIT RIGHT THROUGH C MOV HTDIN,C CLR HTCLK ;MAKE CLK H FOR DONE ACALL DELAY0 DJNZ COUNTER,SENDAT MOV A,#0CH MOV COUNTER,#5 SEND#: SETB HTCLK ACALL DELAY0 RRC A ;SIFT 4 BIT RIGHT THROUGH C MOV HTDIN,C CLR HTCLK ;MAKE CLK H FOR DONE ACALL DELAY0 DJNZ COUNTER,SEND# MOV A,#0DH MOV COUNTER,#5 SENDA: SETB HTCLK ACALL DELAY0 RRC A ;SIFT 4 BIT RIGHT THROUGH C MOV HTDIN,C CLR HTCLK ;MAKE CLK H FOR DONE ACALL DELAY0 DJNZ COUNTER,SENDA MOV A,#0EH MOV COUNTER,#5 SENDB: SETB HTCLK ACALL DELAY0 RRC A ;SIFT 4 BIT RIGHT THROUGH C MOV HTDIN,C CLR HTCLK ;MAKE CLK H FOR DONE ACALL DELAY0 DJNZ COUNTER,SENDB MOV A,#0FH MOV COUNTER,#5 SENDC: SETB HTCLK ACALL DELAY0 RRC A ;SIFT 4 BIT RIGHT THROUGH C MOV HTDIN,C CLR HTCLK ;MAKE CLK H FOR DONE ACALL DELAY0 DJNZ COUNTER,SENDC MOV A,#00 MOV COUNTER,#5 SENDD: SETB HTCLK ACALL DELAY0 RRC A ;SIFT 4 BIT RIGHT THROUGH C MOV HTDIN,C CLR HTCLK ;MAKE CLK H FOR DONE ACALL DELAY0 DJNZ COUNTER,SENDD SETB HTCLK ;MAKE CLK L ;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& MOV A,#0FFH ;SEND STOP COMMAND MOV COUNTER,#5 SENDF0: SETB HTCLK ACALL DELAY0 RRC A ;SIFT 4 BIT RIGHT THROUGH C MOV HTDIN,C CLR HTCLK ;MAKE CLK H FOR DONE ACALL DELAY0 DJNZ COUNTER,SENDF0 SETB HTCS SETB HTCLK AJMP START ;;###################################################### 4DELAY:ACALL DELAY ACALL DELAY ACALL DELAY ACALL DELAY RET DELAY0:MOV R3,#50 ;DELAY2 FOR HOLD DATA HERE2: MOV R2,#75 HERE3: DJNZ R2,HERE3 DJNZ R3,HERE2 RET DELAY1:MOV R3,#20 ;DELAY2 FOR 24C HERE8: MOV R2,#30 HERE7: DJNZ R2,HERE7 DJNZ R3,HERE8 RET DELAY: MOV R3,#255 ;DELAY2 FOR HOLD DATA HERE5: MOV R2,#255 HERE4: DJNZ R2,HERE4 DJNZ R3,HERE5 RET END