برنامه ای بنویسید که مقدار پتانسیومتر را روی لپ تاپ نمایش دهد:
.include "m32def.inc"
.ORG 0
;>> General Constants
CLR R20
SER R21
;>> Stack Pointer Localizing
LDI R17,$01
OUT SPL,R20
OUT SPH,R17
;***************************
;>> Potansiometer
;>> ADC Initiating
LDI R16,$E0
OUT ADMUX,R16
LDI R16,$87;XXX
OUT ADCSRA,R16
OUT SFIOR,R20
;>> Read from ADC1
;SBI ADMUX,MUX0
IST:
SBI ADCSRA,ADSC; Start Conversion
SBIS ADCSRA,ADIF
RJMP IST
SBI ADCSRA,ADIF; Clear ADIF flag
IN R30,ADCH
;>> Simple Display
OUT DDRC,R21
OUT PORTC,R30;XXX
;RJMP IST
;****************************
;>> USART
;>> loop vars
LDI R23,0
LDI R24,3
;>> USART Registers
CLI
OUT UCSRA,R20
LDI R16,$08
OUT UCSRB,R16
LDI R17,$86
OUT UCSRC,R17
;>> Baud Rate
OUT UBRRH,R20
LDI R16,$47 ;As in ne-ir
OUT UBRRL,R16
SEI
;>> Wait to empty buffer
Sabr:
SBIS UCSRA,5
RJMP Sabr
;>> Send R30
;LDI R30,82
OUT UDR,R30
;>> Repeat above 3X
INC R23
CPSE R23,R24
RJMP Sabr
;JJJ:
;RJMP JJJ
;RJMP IST
;###############################################
OUT DDRC,R21
;>> Calculate T as:
;>> X=65535-10800*T-1>; 1<X<65535, T: Time
;>> Then write X in TCNT1H and TCNT1L
;>> Here for 0.1 second: X=10799=FBC6
;>> Timer1 Settings
LDI R25,$EF
LDI R24,$C6
OUT TCCR1A,R20
LDI R30,$05
OUT TCCR1B,R30
start1:
OUT PORTC,R21
RCALL FAZ
OUT PORTC,R20
RCALL FAZ
RJMP IST
;************************
FAZ:
OUT TCNT1H,R25
OUT TCNT1L,R24
NIROO:
IN R19,TIFR
SBRS R19,$4
RJMP NIROO
OUT TIFR,R21
RET