команды SBR и CBRasd писал(а):Подскажите, как запрограмировать отдельные биты в РОНе, но чтобы другие остались прежними.
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
команды SBR и CBRasd писал(а):Подскажите, как запрограмировать отдельные биты в РОНе, но чтобы другие остались прежними.
я же не написал принцип подключения...схему подключения кнопок.
Прошу не обижаться, не смог нарисовать, т.к. инет на работе, а всяких пейнтов и др редакторов нема на рабочей станции. Дело не в лении, а в отсутствии возможности. приду домой выложу схемку.GP1 писал(а):Denikmar
если тебе лень нарисовать схему из одного квадратика и 2х кнопок,я же не написал принцип подключения...схему подключения кнопок.
Код: Выделить всё
.equ SB1=pb3
.equ SB2=pb4
.
.
in tmp,pinb
sbrs tmp,SB1
; здесь должен быть переход на прог. обработки события по кнопке SB1
sbrs tmp,SB2
; здесь должен быть переход на прог. обработки события по кнопке SB2
.
.
.
давай разбирться.Denikmar писал(а):1. после инициализации всех портов начальльное состояние pinb = 0x05 (если кнопки не нажаты), т. о если SB1 нажата то код будет 0х0F ,SB2 - 0x17
2. самый не понятный для меня. команда SBRS () - пропускает одну!
Код: Выделить всё
Main: sei ;global interupt enable
sleep ;go to power down
cli ;global interupt disable
#ifdef Canon
in temp,PINB
com temp
sbrs temp,PB3 ;immediate activation shutter camera (IASC)
rjmp IASC
sbrs temp,PB4 ;activation shutter camera with delay 2 sec(DASC)
rjmp DASC
PulseRIL(10000) ;pattern don`t send
Pulse(10000)
PulseRIL(10000)
rjmp END
IASC:
Pulse(480) ;generate pattern
Pause(7324)
Pulse(480)
PulseRIL(10000) ;pulse indication LED (10mS)
rjmp END
DASC:
Pulse(480) ;generate pattern
Pause(5371)
Pulse(480)
PulseRIL(10000) ;pulse indication LED (10mS)
rjmp END
END:
Код: Выделить всё
com tempстоит подтяжкаGP1 писал(а):ну откуда ты взял 0х05?
Код: Выделить всё
;Ports definition:
.equ LED1 = exp2(PB0) ;IR LED (LED1) port 0
.equ PBTN = exp2(PB1) ;push button INT0 port 1
.equ LED2 = exp2(PB2) ;RED indication LED (LED) port 2
.equ PBTN1 = exp2(PB3) ;immediate activation shutter camera port 3
.equ PBTN2 = exp2(PB4) ;activation shutter camera with delay 2 sec port 4
.equ PBTN_ALL = PBTN | PBTN1 | PBTN2
.equ DIRB = LED1 | LED2 ;port B direction
.equ PUPB = LED1 | LED2 | PBTN_ALL ;port B pull-ups/initial values
...............
;Global Register Variables:
.def temp = r16 ;temporary register temp
.def tempL = r17 ;temporary register tempL
.def tempH = r18 ;temporary register tempH
.def Cnt = r19 ;temporary register Cnt
...............
;Initialization:
...............
ldi temp,PUPB
out PORTB,temp ;init PORTB and on/off pullup
ldi temp,DIRB
out DDRB,temp ;set PORTB directionСОМ побитно инвертирует temp в котором находятся данные (pinb), а затем идет командаGP1 писал(а):и зачем тебе ЭТОcom R -> R=0xFF-RКод: Выделить всё
com temp
Код: Выделить всё
sbrs temp,PB3 ;immediate activation shutter camera (IASC)
rjmp IASC
sbrs temp,PB4 ;activation shutter camera with delay 2 sec(DASC)
rjmp DASC
Код: Выделить всё
; расписываем ноги микрухи
.equ LED1 = exp2(PB0) ;0b00000001
.equ PBTN = exp2(PB1) ;0b00000010
.equ LED2 = exp2(PB2) ;0b00000100
.equ PBTN1 = exp2(PB3) ;0b00001000
.equ PBTN2 = exp2(PB4) ;0b00010000
.equ PBTN_ALL = PBTN | PBTN1 | PBTN2 ;0b00011010
.equ DIRB = LED1 | LED2 ;0b00000101
;port B pull-ups/initial values
.equ PUPB = LED1 | LED2 | PBTN_ALL ;0b00011111
...............
;Initialization:
;В PORTB загружаем temp
ldi temp,PUPB ;0b00011111
out PORTB,temp ;0b00011111
;Выставляем направление портов
ldi temp,DIRB
out DDRB,temp ;0b00000101
; таким образом
;PORTB=0b00011111
;DDRB =0b00000101 (pb0, pb1 выходы причем на выходе
;логическая 1; pb1,pb3,pb4 входы причем в состоянии pull up ~100k)
;и тогда начальное состояние pinb после инициализации портов будет:
;PINB = 0b00000101 (правда он на Attiny12 6-разрядый но это не важно)
Код: Выделить всё
; таким образом
;PORTB=0b00011111
;DDRB =0b00000101 (pb0, pb1 выходы причем на выходе
;логическая 1; pb1,pb3,pb4 входы причем в состоянии pull up ~100k)
;и тогда начальное состояние pinb после инициализации портов будет:
;PINB = 0b00000101 (правда он на Attiny12 6-разрядый но это не важно)