Без описания |
Поиск в теме | Версия для печати |
KJIOYH |
Отправлено: 19 Октября, 2008 - 16:26:54
|
Рядовой
Сообщений всего: 17
Дата рег-ции: Авг. 2008
|
Доброго времени суток. Нужно инициализировать ацп , установить его в режим непрерывной оцифровки , или как это называется , и вывести младший байт результата на PortD . Вот мой код:CODE:
.include "m8def.inc"
.list
.def temp =r16
.def s1 =r17
.equ ADCSM = 0b11011111 ;то , что мы запишем в регистры управления АЦП
.equ ADMX = 0b01000000 ;
.cseg
.org 0
init:
ldi temp,low(RAMEND)
out SPL,temp
ldi temp,high(RAMEND)
out SPH,temp
ldi temp,0xff
out DDRD,temp
ldi temp,0x00
out PORTD,temp ; порт D на вывод, все значени - 0
ldi temp,ADCSM
OUT ADCSR, temp
ldi temp,ADMX
OUT ADMUX, temp
main:
m1:
ldi temp,ADCSR ; если бит
out sreg,temp ;ADIF =1
BRBS 4, m2 ; то переходим в m2
rjmp m1
;-----------------------------
m2:
ldi temp,ADCH
out PORTD,temp
rjmp m1
на макетной плате : на ADC0 подаётся напряжение от 0 до +5 в , adref и avcc соединены с плюсом питания, питание - +5 вольт......А теперь собственно вопрос: ybxutj не работает , на порту д - нули , где ошибка?(Отредактировано автором: 19 Октября, 2008 - 19:15:18) |
|
|
Белый Волк |
Отправлено: 20 Октября, 2008 - 07:05:52
|
Супермодератор
Сообщений всего: 648
Дата рег-ции: Февр. 2007
|
Попробуйте:
CODE:
.include "m8def.inc"
.list
.def temp =r16
.def s1 =r17
.equ ADCSM = 0b11101111 ;то , что мы запишем в регистры управления АЦП
.equ ADMX = 0b01000000 ;
.cseg
.org 0
init:
ldi temp,low(RAMEND)
out SPL,temp
ldi temp,high(RAMEND)
out SPH,temp
ldi temp,0xff
out DDRD,temp
ldi temp,0x00
out PORTD,temp ; порт D на вывод, все значени - 0
ldi temp,ADCSM
OUT ADCSR, temp
ldi temp,ADMX
OUT ADMUX, temp
main:
m1:
lds temp, 0x26 ;если ADIF установлен
SBRS temp, 4 ;то переходим в m2
rjmp m1
;-----------------------------
m2:
ldi temp,ADCH
out PORTD,temp
rjmp m1
|
|
|
KJIOYH |
Отправлено: 21 Октября, 2008 - 15:56:06
|
Рядовой
Сообщений всего: 17
Дата рег-ции: Авг. 2008
|
Заработало вот с таким кодом :
CODE:
.include "m8def.inc"
.def Temp1=R16
.dseg
Digit: .byte 2
.cseg
.org 0
rjmp RESET ;External Pin, Power-on Reset, Brown-out Reset, and Watchdog Reset
rjmp INT_0 ;External Interrupt Request 0
rjmp INT_1 ;External Interrupt Request 1
rjmp TIMER2_COMP ;Timer/Counter2 Compare Match
rjmp TIMER2_OVF ;Timer/Counter2 Overflow
rjmp TIMER1_CAPT ;Timer/Counter1 Capture Event
rjmp TIMER1_COMPA ;Timer/Counter1 Compare Match A
rjmp TIMER1_COMPB ;Timer/Counter1 Compare Match B
rjmp TIMER1_OVF ;Timer/Counter1 Overflow
rjmp TIMER0_OVF ;Timer/Counter0 Overflow
rjmp SPI_STC ;Serial Transfer Complete
rjmp USART_RXC ;USART, Rx Complete
rjmp USART_UDRE ;USART Data Register Empty
rjmp USART_TXC ;USART, Tx Complete
rjmp ADC_CC ;ADC Conversion Complete
rjmp EE_RDY ;EEPROM Ready
rjmp ANA_COMP ;Analog Comparator
rjmp TWI ;Two-wire Serial Interface
rjmp SPM_RDY ;Store Program Memory Ready
INT_0 : ret
INT_1 : ret
TIMER2_COMP : ret
TIMER2_OVF : ret
TIMER1_CAPT : ret
TIMER1_COMPA : ret
TIMER1_COMPB : ret
TIMER1_OVF : ret
TIMER0_OVF : ret
SPI_STC : ret
USART_RXC : ret
USART_UDRE : ret
USART_TXC : ret
;ADC_CC : ret
EE_RDY : ret
ANA_COMP : ret
TWI : ret
SPM_RDY : ret
reset:
ldi Temp1, LOW(RamEnd)
out SPL, Temp1
ldi Temp1, HIGH(RamEnd)
out SPH, Temp1
cli
ldi Temp1, 0b11111111
out ddrd, temp1
ldi Temp1, 0b10101011
out ADCSR, Temp1
ldi Temp1, 0b00000000
out ADMUX, Temp1
ldi r16,(1<<SE) ; Enable sleep mode
out MCUCR, r16
sei
rjmp main2
main:
rjmp main
main2:
sbi ADCSR, 6
rjmp main
ADC_CC:
in temp1, ADCH
out portd,temp1
in temp1, ADCH
out portb,temp1
reti
может кому пригодится |
|
|
|
Поиск в теме | Версия для печати |
Страниц (2): [1] 2 » |
« Делимся опытом » |
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
|
|
|
|
|