Ревич, Ю.В. Программирование микроконтроллеров AVR: от Arduino к ассемблеру
Глава 1 0. Использование EEPROM EXT _ INTl : ; кнопка "меньше " отпущена cbi PortD , 6 ; PD6 = low гасим reti rcal l WriteEEP ; пишем текущее значение porog clr temp ; запрещаем прерывание out GIMSK, temp WriteEEP : ; в zg : ZL - адрес EEPROM куда писать ; в porog - записываемый байт sЬic EECR, EEWE ; ждем очистки бита rjmp WriteEEP ; разрешения записи EEWE out EEAR , ZL ; адрес в tiny2 3 1 3 однобитовый out EEDR , porog ; данные sЬi EECR, EEМWE ; установить флаг разрешения записи sЬi EECR , EEWE ; установить бит разрешения ret ; ( конец WriteEEP ) ReadEEP : ; в ZH : ZL - адрес откуда читать ; возврат porog - прочтенный байт sЬic EECR, EEWE ; ожидание очистки флага записи rjmp ReadEEP out EEAR, ZL ; адрес в tiny2 3 1 3 однобитовый sЬi EECR, EERE ; бит чтения in porog , EEDR ; чтение ret ; конец ReadEEP Reset : ldi temp , low (RAМEND ) out SPL , temp ; у tiny2 3 1 3 один байт адреса стека ldi temp , ObO O O O l O O O ; РВЗ=ОСlА, - Output out DDRВ , temp ldi temp , ObO l O O O O O O ; PD6 - Output out DDRD , temp ldi temp, ObO O O O l l O O ; для разряда 2 и 3 порта D INTO , INTl out PORTD , temp ; подтягивающие резисторы на всякий случай ldi temp , ObO O O O l l l l ; прер . INTO и INTl на отпускание out MCUCR, temp ldi temp , ОЫО О О О О О l ; COM1Al=Ьit7 ; WGМl O=ЬitO Вбит FastPWМ выв А out TCCRlA, temp ldi temp, ОЬ00 0 0 1 0 1 1 ; Ьit3=WGM12 , CS12 : CS 1 0= 1 1 = 1 : 64 out TCCRlB, temp clr ZL ; нулевой адрес в EEPROM rcall ReadEEP ; извлекаем запомненное значение porog clr temp 281
Made with FlippingBook
RkJQdWJsaXNoZXIy MTExODQxMg==