Вот простая программа которая нехочет работать в PROTEUS:
При нажатия кнопки ,увеличивается TEMP,и выводится на выход PORTC
а также поясните для чего pcicr , pcmsk0, pcifr -а даташите нечего непонял(
И еще хотел спросить INTO и PCINT0 отдельно?
тоесть для PCINTO ненадо заполнять eicra EIMSK EIfr
тоесть для INTO ненадо заполнять pcicr pcmsk0 pcifr
Файлы прикрепленны
;
.include "C:\Program Files\Atmel\AVR Tools\AvrAssembler2\Appnotes\m48def.inc"
.list
.nolist
.list
;
.def temp =r16;
.org 0x000
rjmp unit;
.org 0x0001
rjmp EXT_INT0;настраиваем прерывание into
.org 0x0003
rjmp PCINT0; настраиваем прерывание PCINTo
unit :
clr temp;
out DDRB,temp;
clr temp;
out DDRD,temp;
ser temp;
out DDRc,temp;
ldi r16,high(RAMEND) ; устанавливаем область стека
out SPH,r16 ;
ldi r16,low(RAMEND) ;
out SPL,r16 ;
clr temp;
ldi temp,0b00000010 ;INT0 ISC11=1,SC10=0
sts eicra,temp ;по спадающему фронту
ldi temp,0b00000001 ;разрешаем прерывание INT0
sts EIMSK,temp;
ldi temp,0b00000000 ;по низкому уровню ставим 0
sts EIfr,temp;
ldi temp,0b00000001 ;устанавливаем контроль
sts pcicr,temp; ; прирывания на PCINT0-7
ldi temp,0b00000001
sts pcmsk0,temp;
ldi temp,0b00000000 ; Флаг устанавливается автоматически
sts pcifr,temp; ; при возникновения событии на PCINT0
; сбрасывается в 0 при прирывании
; после снова устанавливается в 1
;разрешаем прерывание
sei
start:
out portc,temp;
rjmp start;
;прерывание
!!!!! PCINTo: !!!!!!!!!!!!!! - в АВР выдает ошибку
EXT_INT0:
inc temp;
reti
- Вложения
-
- perivanie.rar
- (7.11 КБ) 225 скачиваний


