;********************************************************* ;SAMPLE PROGRAM 8535-80.ASM 8CH AD CONVERTER ;CPU  AT90S8535-8 2004/mar,13-14 BY JJ1ILR ;********************************************************* ;**** INDICATE INCLUDE FILE **** .include "8535def.inc" ;**** regster set **** .DEF TEMP = R16 ;TEMP REG .DEF DATA = R17 ;DATA REG .DEF SUB = R18 ;SUB REG .DEF COU = R19 ;COU REG .DEF VAL = R20 ;VAL REG .DEF VAL1 = R21 .DEF VAL2 = R22 .DEF DDA = R23 ;DDA REG ; STACK POINT $025F ; LCD ADDRESS 1GYOUME:80-93 ; 2GYOUME:B0-C3 ; 3GYOUME:94-A7 ; 4GYOUME:C4-D7 ; ADC0 HEX-DATA 60-61 ; ADC1 62-63 ; ADC2 64-65 ; ADC3 66-67 ; ADC4 68-69 ; ADC5 6A-6B ; ADC6 6C-6D ; ADC7 6E-6F ; ADC0 DEC-DATA E0-E3 ; ADC1 DEC-DATA E4-E7 ; ADC2 DEC-DATA E8-EB ; ADC3 DEC-DATA EC-EF ; ADC4 DEC-DATA F0-E3 ; ADC5 DEC-DATA F4-F7 ; ADC6 DEC-DATA F8-FB ; ADC7 DEC-DATA FC-FF ; LCD ADRESS MAP ; 00 01 02 ...... 0F 10 11 12 13 ; 40 41 42 ...... 4F 50 51 52 53 ; 14 15 16 ...... 23 24 25 26 27 ; 54 55 56 ...... 63 64 65 66 67 ;****reset vector and interrupt vector set **** RJMP RESET ; Reset handle RJMP RESET ; Reset handle RJMP RESET ; Reset handle RJMP RESET ; Reset handle RESET: LDI TEMP,$5F ;STACK POINT SET OUT SPL,TEMP LDI TEMP,$02 ;STACK POINT SET OUT SPH,TEMP ;*** LCD INIT *** RCALL PINIT0 LDI DATA,$50 ;250uS*80=19.92mS RCALL TIMER ;(DATA,SUB-2) INITLCD:LDI DATA,$3F ;INITAL DATA RCALL LCD8SO ;LCD 8BIT OUT(DATA-2) LDI DATA,$14 ;249uS*20=4.98mS RCALL TIMER ;(DATA,SUB-2) LDI DATA,$3F RCALL LCD8SO ;(DATA-2) LDI DATA,$01 ;249uS RCALL TIMER ;(DATA,SUB-2) LDI DATA,$3F RCALL LCD8SO ;(DATA-2) LDI DATA,$01 ;249uS RCALL TIMER ;(DATA,SUB-2) LDI DATA,$2F RCALL LCD8SO ;(DATA-2) RCALL BUSY ;(TEMP-2) LDI DATA,$28 ;2GYO,5*7 RCALL LCD4SO ;(DATA,SUB-2) RCALL BUSY ;(TEMP-2) LDI DATA,$0C ;LCD ON NO-CURSOL,NO-BRINC RCALL LCD4SO ;(DATA,SUB-2) ;*** DISP DATA INIT ROM->RAM *** LDI ZL,$80 ;Z <- $0080 LDI ZH,$00 LDI DATA,$30 ;1GYOUME ST Z,DATA INC ZL LDI DATA,$3A ST Z,DATA INC ZL LDI DATA,$30 ST Z,DATA INC ZL ST Z,DATA INC ZL ST Z,DATA INC ZL ST Z,DATA INC ZL LDI DATA,$6D ST Z,DATA INC ZL LDI DATA,$56 ST Z,DATA INC ZL LDI DATA,$31 ST Z,DATA INC ZL LDI DATA,$3A ST Z,DATA INC ZL LDI DATA,$30 ST Z,DATA INC ZL ST Z,DATA INC ZL ST Z,DATA INC ZL ST Z,DATA INC ZL LDI DATA,$6D ST Z,DATA INC ZL LDI DATA,$56 ST Z,DATA INC ZL LDI DATA,$20 ST Z,DATA INC ZL ST Z,DATA INC ZL ST Z,DATA INC ZL ST Z,DATA INC ZL LDI ZL,$B0 ;Z <- $00B0 LDI ZH,$00 LDI DATA,$32 ;2GYOUME ST Z,DATA INC ZL LDI DATA,$3A ST Z,DATA INC ZL LDI DATA,$30 ST Z,DATA INC ZL ST Z,DATA INC ZL ST Z,DATA INC ZL ST Z,DATA INC ZL LDI DATA,$6D ST Z,DATA INC ZL LDI DATA,$56 ST Z,DATA INC ZL LDI DATA,$33 ST Z,DATA INC ZL LDI DATA,$3A ST Z,DATA INC ZL LDI DATA,$30 ST Z,DATA INC ZL ST Z,DATA INC ZL ST Z,DATA INC ZL ST Z,DATA INC ZL LDI DATA,$6D ST Z,DATA INC ZL LDI DATA,$56 ST Z,DATA INC ZL LDI DATA,$20 ST Z,DATA INC ZL ST Z,DATA INC ZL ST Z,DATA INC ZL ST Z,DATA INC ZL LDI ZL,$94 ;Z <- $0094 LDI ZH,$00 LDI DATA,$34 ;3GYOUME ST Z,DATA INC ZL LDI DATA,$3A ST Z,DATA INC ZL LDI DATA,$30 ST Z,DATA INC ZL ST Z,DATA INC ZL ST Z,DATA INC ZL ST Z,DATA INC ZL LDI DATA,$6D ST Z,DATA INC ZL LDI DATA,$56 ST Z,DATA INC ZL LDI DATA,$35 ST Z,DATA INC ZL LDI DATA,$3A ST Z,DATA INC ZL LDI DATA,$30 ST Z,DATA INC ZL ST Z,DATA INC ZL ST Z,DATA INC ZL ST Z,DATA INC ZL LDI DATA,$6D ST Z,DATA INC ZL LDI DATA,$56 ST Z,DATA INC ZL LDI DATA,$20 ST Z,DATA INC ZL ST Z,DATA INC ZL ST Z,DATA INC ZL ST Z,DATA INC ZL LDI ZL,$C4 ;Z <- $00C4 LDI ZH,$00 LDI DATA,$36 ;4GYOUME ST Z,DATA INC ZL LDI DATA,$3A ST Z,DATA INC ZL LDI DATA,$30 ST Z,DATA INC ZL ST Z,DATA INC ZL ST Z,DATA INC ZL ST Z,DATA INC ZL LDI DATA,$6D ST Z,DATA INC ZL LDI DATA,$56 ST Z,DATA INC ZL LDI DATA,$37 ST Z,DATA INC ZL LDI DATA,$3A ST Z,DATA INC ZL LDI DATA,$30 ST Z,DATA INC ZL ST Z,DATA INC ZL ST Z,DATA INC ZL ST Z,DATA INC ZL LDI DATA,$6D ST Z,DATA INC ZL LDI DATA,$56 ST Z,DATA INC ZL LDI DATA,$20 ST Z,DATA INC ZL ST Z,DATA INC ZL ST Z,DATA INC ZL ST Z,DATA INC ZL ;**** MAIN **** MAIN: ;*** DATA DISP *** LDI ZL,$80 LDI ZH,$00 RCALL DISP1 ;1,3 GYOUME DISP LDI ZL,$B0 LDI ZH,$00 RCALL DISP2 ;2,4 GYOUME DISP ;*** READ ADC CH 0-7 *** LDI DATA,$07 ;ADC READ CH 0-7 READAD: LDI ZL,$60 ;ZL=$60 LDI ZH,$00 ;ZH=$00 RCALL ADCR ;(DATA,TEMP,Z) DEC DATA CPI DATA,$FF BRNE READAD RCALL COUNT RCALL ASC LDI DATA,$50 ;250uS*80=19.92mS RCALL TIMER ;(DATA,SUB-2) LDI DATA,$50 ;250uS*80=19.92mS RCALL TIMER ;(DATA,SUB-2) LDI DATA,$50 ;250uS*80=19.92mS RCALL TIMER ;(DATA,SUB-2) LDI DATA,$50 ;250uS*80=19.92mS RCALL TIMER ;(DATA,SUB-2) LDI DATA,$50 ;250uS*80=19.92mS RCALL TIMER ;(DATA,SUB-2) RJMP MAIN ;*** SUBRUTIN ASC *** ASC: LDI ZL,$E0 ;CH0 LDI ZH,$00 LDI YL,$85 LDI YH,$00 LDI COU,$04 RCALL ASC0 LDI ZL,$E4 ;CH1 LDI ZH,$00 LDI YL,$8D LDI YH,$00 LDI COU,$04 RCALL ASC0 LDI ZL,$E8 ;CH2 LDI ZH,$00 LDI YL,$B5 LDI YH,$00 LDI COU,$04 RCALL ASC0 LDI ZL,$EC ;CH3 LDI ZH,$00 LDI YL,$BD LDI YH,$00 LDI COU,$04 RCALL ASC0 LDI ZL,$F0 ;CH4 LDI ZH,$00 LDI YL,$99 LDI YH,$00 LDI COU,$04 RCALL ASC0 LDI ZL,$F4 ;CH5 LDI ZH,$00 LDI YL,$A1 LDI YH,$00 LDI COU,$04 RCALL ASC0 LDI ZL,$F8 ;CH6 LDI ZH,$00 LDI YL,$C9 LDI YH,$00 LDI COU,$04 RCALL ASC0 LDI ZL,$FC ;CH7 LDI ZH,$00 LDI YL,$D1 LDI YH,$00 LDI COU,$04 RCALL ASC0 RET ;*** SUBRUTIN ASC *** ASC0: LDI TEMP,$30 ASC1: LD DATA,Z ADD DATA,TEMP ST Y,DATA INC ZL DEC YL DEC COU BRNE ASC1 RET ;*** SUBRUTIN COUNT *** DATA,COU,TEMP,VAL,Z,Y-2 COUNT: LDI ZL,$E0 ;CLEAR $E0-FF LDI ZH,$00 LDI COU,$20 LDI DATA,$00 COUNT1: ST Z,DATA INC ZL DEC COU BRNE COUNT1 LDI ZL,$60 ;Z=$0060 LDI ZH,$00 INC ZL LD COU,Z INC COU DEC ZL LDI YL,$E0 ;Y=$00E0 LDI YH,$00 RCALL ADC0 LDI ZL,$62 ;Z=$0062 LDI ZH,$00 INC ZL LD COU,Z INC COU DEC ZL LDI YL,$E4 ;Y=$00E4 LDI YH,$00 RCALL ADC0 LDI ZL,$64 ;Z=$0064 LDI ZH,$00 INC ZL LD COU,Z INC COU DEC ZL LDI YL,$E8 ;Y=$00E8 LDI YH,$00 RCALL ADC0 LDI ZL,$66 ;Z=$0066 LDI ZH,$00 INC ZL LD COU,Z INC COU DEC ZL LDI YL,$EC ;Y=$00EC LDI YH,$00 RCALL ADC0 LDI ZL,$68 ;Z=$0068 LDI ZH,$00 INC ZL LD COU,Z INC COU DEC ZL LDI YL,$F0 ;Y=$00F0 LDI YH,$00 RCALL ADC0 LDI ZL,$6A ;Z=$006A LDI ZH,$00 INC ZL LD COU,Z INC COU DEC ZL LDI YL,$F4 ;Y=$00F4 LDI YH,$00 RCALL ADC0 LDI ZL,$6C ;Z=$006C LDI ZH,$00 INC ZL LD COU,Z INC COU DEC ZL LDI YL,$F8 ;Y=$00F8 LDI YH,$00 RCALL ADC0 LDI ZL,$6E ;Z=$006E LDI ZH,$00 INC ZL LD COU,Z INC COU DEC ZL LDI YL,$FC ;Y=$00FC LDI YH,$00 RCALL ADC0 RET ;*** SUBRUTIN ADC0 *** DATA,TEMP,COU,VAL,VAL1,VAL2,DAA,Z,Y ADC0: LDI VAL,$04 ;SET $04 04 ADC3 LDI DDA,$0A ;SET $0A 10 LD TEMP,Z MORE0: CPI TEMP,$00 BREQ MOREE ADC1: LD DATA,Y ADD DATA,VAL CPI DATA,$0A BRCC MORE1 ST Y,DATA DEC TEMP RJMP MORE0 MORE1: SUB DATA,DDA ST Y,DATA INC YL LD DATA,Y INC DATA CPI DATA,$0A BRCC MORE2 ST Y,DATA DEC YL DEC TEMP RJMP MORE0 MORE2: SUB DATA,DDA ST Y,DATA INC YL LD DATA,Y INC DATA CPI DATA,$0A BRCC MORE3 ST Y,DATA DEC YL DEC YL DEC TEMP RJMP MORE0 MORE3: SUB DATA,DDA ST Y,DATA INC YL LD DATA,Y INC DATA ST Y,DATA DEC YL DEC YL DEC YL DEC TEMP RJMP MORE0 MOREE: DEC COU BRNE ADC1 RET ;*** SUBRUTIN ADC READ *** DATA,TEMP ADCR: OUT ADMUX,DATA ;DATAのADC CHANNELを選択 LDI TEMP,0b11000111 ;一回、スタート OUT ADCSR,TEMP ; ADCR1: SBIC ADCSR,6 ;ADC END FLAG RJMP ADCR1 ADCR2: IN TEMP,ADCL ;ADC LOW DATA READ ADD ZL,DATA ;SAVE TO $60- ADD ZL,DATA ST Z,TEMP ; INC ZL IN TEMP,ADCH ST Z,TEMP RET ;*** SUBRUTIN DISP *** DATA,SUB,COU DISP1: LDI COU,$28 LDI DATA,$80 ;1,3GYOUME ADDRESS SET RCALL BUSY ;(TEMP) RCALL LCD4SO ;(DATA,SUB-2) DISPA: RCALL BUSY LD DATA,Z ;DATA<-(Z) RCALL LCD4RO INC ZL DEC COU BRNE DISPA RET DISP2: LDI COU,$28 LDI DATA,$C0 ;2,4GYOUME ADDRESS SET RCALL BUSY ;TEMP RCALL LCD4SO DISPB: RCALL BUSY LD DATA,Z ;DATA<-(Z) RCALL LCD4RO INC ZL DEC COU BRNE DISPB RET ;*** SUBRUTIN LCD8SO *** DATA, LCD8SO: CBI PORTD,5 ;RS CBI PORTD,4 ;R/W SBI PORTD,3 ;E OUT PORTC,DATA RCALL WAIT CBI PORTD,3 RET ; ;*** SUBRUTIN LCD4SO *** DATA,SUB LCD4SO: CBI PORTD,5 ;RS CBI PORTD,4 ;R/W SBI PORTD,3 ;E MOV SUB,DATA ORI DATA,$0F OUT PORTC,DATA RCALL WAIT CBI PORTD,3 CBI PORTD,5 ;RS CBI PORTD,4 ;R/W SBI PORTD,3 ;E SWAP SUB ORI SUB,$0F OUT PORTC,SUB RCALL WAIT CBI PORTD,3 RET ;*** SUBRUTIN LCD4RO *** DATA,SUB LCD4RO: SBI PORTD,5 ;RS CBI PORTD,4 ;R/W SBI PORTD,3 ;E MOV SUB,DATA ORI DATA,$0F OUT PORTC,DATA RCALL WAIT CBI PORTD,3 SBI PORTD,5 ;RS CBI PORTD,4 ;R/W SBI PORTD,3 ;E SWAP SUB ORI SUB,$0F OUT PORTC,SUB RCALL WAIT CBI PORTD,3 RET ; ;*** SUBRUTIN 250US *** SUB QUS: LDI SUB,$A7 ;249uS WAIT $A7=167 LOOP1: NOP ;1/6.144MHz*166*6=249uS NOP NOP NOP DEC SUB BRNE LOOP1 RET ;*** SUBRUTIN TIMER *** DATA,SUB TIMER: RCALL QUS DEC DATA BRNE TIMER RET ; ;*** SUBRUTIN BUSY *** TEMP BUSY: RCALL PINIT2 CBI PORTD,5 ;RS SBI PORTD,4 ;R/W SBI PORTD,3 ;E RCALL WAIT LOOP2: ;RJMP LO SBIC PINC,7 ;BUSY FLAG RJMP LOOP2 LO: CBI PORTD,3 RCALL PINIT1 RET ; ;*** SUBRUTION WAIT *** WAIT: RET ;CLK *7=1.75uS ;**** subrution PORT init **** TEMP pinit0: ;PORT A 0-7 SET INPUT LDI TEMP,0x00 OUT DDRA,TEMP ;PORT A 0-7 SET NOT PULL UP ldi temp,0x00 out PORTA,temp ;PORT D 3,4,5 DRT OUTPUT ldi temp,0x38 out DDRD,temp ;PORT B 0-7 SET INPUT & SET PULL UP LDI TEMP,$00 OUT DDRB,TEMP ldi temp,0Xff out PORTB,temp pinit1: ;PORT C 0-7 SET OUTPUT ldi temp,0xFF out DDRC,temp ret ;**** subrution PORT init **** TEMP pinit2: ;PORT C 0-7 SET INPUT LDI TEMP,0x00 OUT DDRC,TEMP ;PORT C 0-7 SET PULL UP ldi temp,0xFF out PORTC,temp ret ;**** End of File **** .ESEG eevar1: .DB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF ;00-07 EEROM CLEAR $FF .DB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF ;08-0F .DB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF ;10-17 .DB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF ;18-1F .DB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF ;20-27 .DB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF ;28-2F .DB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF ;30-37 .DB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF ;38-3F .DB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF ;40-47 .DB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF ;48-4F .DB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF ;50-57 .DB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF ;58-5F .DB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF ;60-67 .DB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF ;68-6F .DB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF ;70-77 .DB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF ;78-7F .DB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF ;80-87 .DB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF ;88-8F .DB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF ;90-97 .DB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF ;98-9F .DB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF ;A0-A7 .DB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF ;A8-AF .DB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF ;B0-B7 .DB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF ;B8-BF .DB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF ;C0-C7 .DB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF ;C8-CF .DB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF ;D0-D7 .DB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF ;D8-DF .DB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF ;E0-E7 .DB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF ;E8-EF .DB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF ;F0-F7 .DB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF ;F8-FF