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;
   364   365   366   367   368   369   370   371   372   373   374