Professional Documents
Culture Documents
Prelab 5 N2
Prelab 5 N2
Prelab 5 N2
HCM
ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH
MỤC TIÊU:
THAM KHẢO:
BÀI 1
1. Trả lời các câu hỏi
a. Ở chế độ Single Conversion, làm thế nào bắt đầu một chu kỳ lấy mẫu và kiểm tra xem
bao giờ nó thực hiện xong
d. Với VREF=VCCA, công thức tính ra điện áp ngõ vào từ ADC là gì?
Trong đó ADCVal là giá trị đọc từ ADC, giá trị không dấu từ 0x00 đến 3FF VREF = 5V.
e. Với VREF=2.56V, công thức tính ra điện áp ngõ vào từ ADC là gì?
Trong đó ADCVal là giá trị đọc từ ADC, giá trị không dấu từ 0x00 đến 3FF VREF = 2,56V.
f. Ghi nhận giá trị ADC so với kết quả đo từ đồng hồ đo. Tính giá trị điện áp theo giá trị thu
được từ ADC với VREF=VCCA.
LAB 5-1
LẬP TRÌNH SỬ DỤNG ADC
ADCH- 0 109 207 303 409 509 611 709 814 912 1018
ADCL
ADCH- 0 102 205 307 410 512 614 717 819 922 1024
ADCL
(lý
thuyết)
Sai số 0 7 2 4 1 3 3 8 5 10 6
(LSB)
Bảng 1
g. Lặp lại bước f với VREF=2.56. So sánh công thức tính và sai số với bước e
ADCH- 0 197 409 587 798 1001 1193 1302 1584 1795 1995
ADCL
ADCH- 0 200 400 600 800 1000 1200 1400 1600 1800 2000
ADCL
(lý
thuyết)
Sai số 0 3 9 13 2 1 7 2 16 5 5
(LSB)
Bảng 2
INIT_ADC:
LDI R16, (1<<REFS0) ; SET REFERENCE VOLTAGE TO AVCC=5, ADC
CHANNEL 0
STS ADMUX, R16 ; STORE THE VALUE IN ADMUX REGISTER
LDI R16, (1<<ADEN) | (1<<ADPS1)|(1<<ADPS2) ; SET ADC PRESCALER TO
64, ENABLE ADC
STS ADCSRA, R16 ; WRITE TO ADCSRA REGISTER
NOP
RET
READ_ADC_16BIT:
PUSH R18
LDS R18, ADCSRA
ORI R18, (1<<ADSC)
STS ADCSRA, R18
READ_ADC_16BIT_WAIT:
LDS R18,ADCSRA
SBRS R18,ADIF
RJMP READ_ADC_16BIT_WAIT
LDS R19, ADCL ; READ ADCL FIRST
OUT PORTB,R19
LDS R16, ADCH ; READ ADCH SECOND
OUT PORTD, R16
STS ADCSRA,R18
POP R18
LAB 5-1
LẬP TRÌNH SỬ DỤNG ADC
RET
INIT_ADC:
LDI R16, (1<<REFS0) ; SET REFERENCE VOLTAGE TO AVCC=5, ADC
CHANNEL 0
STS ADMUX, R16 ; STORE THE VALUE IN ADMUX REGISTER
LDI R16, (1<<ADEN) | (1<<ADPS1)|(1<<ADPS2) ; SET ADC PRESCALER TO
64, ENABLE ADC
STS ADCSRA, R16 ; WRITE TO ADCSRA REGISTER
NOP
RET
LAB 5-1
LẬP TRÌNH SỬ DỤNG ADC
READ_ADC_16BIT:
PUSH R18
LDS R18, ADCSRA
ORI R18, (1<<ADSC)
STS ADCSRA, R18
READ_ADC_16BIT_WAIT:
LDS R18,ADCSRA
SBRS R18,ADIF
RJMP READ_ADC_16BIT_WAIT
STS ADCSRA,R18
LDS R19, ADCL ; READ ADCL FIRST
LDS R16, ADCH ; READ ADCH SECOND
RCALL USART8BIT_TRANS
MOV R16,R19
RCALL USART8BIT_TRANS
POP R18
RET
USART_INIT:
LDI R16,(1<<TXEN0)|(1<<RXEN0) ; CHO PHÉP PHÁT/THU
STS UCSR0B,R16
LDI R16,(1<<UCSZ01)|(1<<UCSZ00) ; KHUNG DATA 8BIT, 1 STOP BIT , NO
PARITY
LAB 5-1
LẬP TRÌNH SỬ DỤNG ADC
USART8BIT_TRANS:
LDS R17,UCSR0A
SBRS R17,UDRE0
RJMP USART8BIT_TRANS
STS UDR0,R16
RET
.ORG 0
RJMP MAIN
.ORG $40
MAIN : RCALL INIT_ADC
RCALL USART_INIT
SER R20
OUT DDRC, R20
START:
RCALL READ_ADC_16BIT
RCALL DELAY1S
HERE: RJMP START
INIT_ADC:
LDI R16, (1<<REFS0) | (1<<REFS1) ; SET REFERENCE VOLTAGE TO 2.56,
ADC CHANNEL 0
STS ADMUX, R16 ; STORE THE VALUE IN ADMUX REGISTER
LDI R16, (1<<ADEN) | (1<<ADPS1)|(1<<ADPS2) ; SET ADC PRESCALER TO
64, ENABLE ADC
LAB 5-1
LẬP TRÌNH SỬ DỤNG ADC
READ_ADC_16BIT:
PUSH R18
LDS R18, ADCSRA
ORI R18, (1<<ADSC)
STS ADCSRA, R18
READ_ADC_16BIT_WAIT:
LDS R18,ADCSRA
SBRS R18,ADIF
RJMP READ_ADC_16BIT_WAIT
STS ADCSRA,R18
LDS R19, ADCL ; READ ADCL FIRST
LDS R16, ADCH ; READ ADCH SECOND
RCALL USART8BIT_TRANS
MOV R16,R19
RCALL USART8BIT_TRANS
POP R18
RET
USART_INIT:
LAB 5-1
LẬP TRÌNH SỬ DỤNG ADC
USART8BIT_TRANS:
LDS R17,UCSR0A
SBRS R17,UDRE0
RJMP USART8BIT_TRANS
STS UDR0,R16
RET