Listing 1 for DI #2312: "uC reprograms audio DAC via serial interface" by Lukasz Sliwczynski, University of Mining and Metallurgy, Institute of Electronics, Cracow, Poland. **************************************************************** ; ATTENUATION SET ON PORT P1.0 (MSB) - P1.6 (LSB) .EQU PCON, 087H .EQU FLAG.7, 07H .EQU FLAG.6, 06H .EQU FLAG.5, 05H .ORG 00H JBC FLAG.7,B_03 ;2 JBC FLAG.6,B_02 ;2 -> TOTAL MACHINE CYCLES: 4 B_01: MOV SBUF,R0 ;2 SEND ATTENUATION BYTE MOV R0,#25H ;1 SAVE MODE 2 BYTE BEFORE RESET SETB FLAG.6 ;1 SET UP FOR THE NEXT RESET MOV A,#02H ;1 NOP ;1 NOP ;1 NOP ;1 NOP ;1 NOP ;1 CLR P3.2 ;1 GENERATE ML SIGNAL ORL PCON,A ;1 GO TO POWER DOWN -> TOTAL MACHINE CYCLES: 12 B_02: MOV SBUF,R0 ;2 SEND BYTE MODE 2 MOV A,P1 ;1 READ MUTE SIGNAL FROM P1.7 ANL A,#080H ;1 ORL A,#060H ;1 MOVC A,@A+DPTR ;2 CALCULATE ADDRESS OF MODE 1 BYTE MOV R0,A ;1 SAVE MODE 1 BYTE BEFORE RESET SETB FLAG.7 ;1 SET UP FOR THE NEXT RESET MOV A,#02H ;1 CLR P3.2 ;1 GENERATE ML SIGNAL ORL PCON,A ;1 GO TO POWER DOWN B_03: MOV SBUF,R0 ;2 SEND BYTE MODE 1 MOV A,P1 ;1 READ ATTENUATION FROM PORT P1.0 - P1.6 RL A ;1 ANL A,#0FEH ;1 MOV R0,A ;1 SAVE ATTENUATION VALUE BEFORE RESET SETB FLAG.5 ;1 SET UP FOR THE NEXT RESET MOV A,#02H ;1 NOP ;1 NOP ;1 CLR P3.2 ;1 GENERATE ML SIGNAL ORL PCON,A ;1 GO TO POWER DOWN ;MODE 1 BYTE FOR MUTE-OFF -> P1.7 = L .ORG 060H .DB 001H ;MODE 1 BYTE FOR MUTE-OFF -> P1.7 = H .ORG 0E0H .DB 041H