Техника микропроцессорных систем в коммутации. Проектирование микропроцессорных систем на базе микроконтроллеров AVR фирмы Atmel. Горохин В.Н. - 36 стр.

UptoLike

Составители: 

71
Ɏɚɣɥ Lɚb_6.prj
; **************************************
; Analog to digital converter demo
; **************************************
.MICRO "ATmega16"
.PROGRAM "Lab6.asm"
.TRACE
.POWER VDD=5 VSS=0 ; Power nodes
; ɂɫɩɨɥɶɡɭɟɬɫɹ ɜɯɨɞ PA5 ɦɢɤɪɨɤɨɧɬɪɨɥɥɟɪɚ
V1 PA5 VSS SIN(2.5 2.5 1)
.PLOT V(PA5)
Ɏɚɣɥ Lab6.asm
;**********************************************
;* 10 bits A/D converter
;**********************************************
.include "c:\vmlab\include\m16def.inc"
.def temp = r16
;**********************************************
; Reset and interrupt vectors
;
.cseg
.org $00
rjmp start ; Go to Reset handler
.org $1C
rjmp ad_vector ; ADC conversion vector
;***********************************************
; ADC complete interrupt service
;
ad_vector:
in temp, ADCH
reti
;***********************************************
; Reset handler
72
;
start:
ldi temp, high(RAMEND) ; ɢɧɢɰɢɚɥɢɡɚɰɢɹ ɩɚɦɹɬɢ ɫɬɟɤɚ
out SPH, temp
ldi temp, low(RAMEND)
out SPL, temp ; ɡɚɜɟɪɲɟɧɢɟ ɢɧɢɰɢɚɥɢɡɚɰɢɢ ɩɚɦɹɬɢ ɫɬɟɤɚ
ldi temp, $45 ; Power on ADC; select prescaler (/8); free running
out ADMUX,temp
ldi temp, $BB
out ADCSR,temp ; and enable end of conversion interrupt
sbi ADMUX, ADLAR
nop
nop
nop ; Leave some time to stabilize before starting
nop
sbi ADCSR, ADSC
sei
forever:
rjmp forever ; Infinite loop, interrupted by ADC conversions