Page 369 - Introduction to Microcontrollers Architecture, Programming, and Interfacing of The Motorola 68HC12
P. 369
346 Chapter 11 Input/ Output
unsigned char hi = 0, lo = 0;
HI: DC.B 0
LO: DC.B 0
unsigned char
PORTB61,DDRB@3,ATDCTL2@Ox62,ATDCTL5@Qx65,ATDSTATO@Ox66, ADR380x76;
PORTS: EQU 1
DDRB: EQU 3
ATDCTL2: EQU $62
ATDCTL5: EQU $65
ATDSTATO: EQU $66
ADR3: EQU $76
void main() { unsigned char i, j, k; DDRB - Oxff;
ORG $850
MAIN: LDD #$FF80
STAA DDRB ;DDRB=OXFF
ATDCTL2 = 0x80; for(j = 1; j != 0x80; j++) ;
STAB ATDCTL2 ;ATDCTL2=Ox80
LDY #$800 ;for(j=l; j!=0x80; j++)
LOOP1: DBNE Y, LOOPl
for(i = 0; i != Oxff; i++){ PORTB « i; ATDCTL5 = 3;
LDD #03
LOOP2: STAA PORTB ;PORTB = i
STAB ATDCTL5 ;ATDCTL5 = 3
do ; while(!(ATDSTATO & 0x80)) ; k = ADR3;
PSHA
LOOP3: BRCLR ATDSTATO, #$80, LOOP3
;do-while(iATDSTATO & 0x80)
k = ADR3;
LDAB ADR3 ;k = ADR3
if((k > i) && (( j = (k ~ i ) ) > hi )) hi = j;

