Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .equ XTAL = 10000000 ;Hz
- .equ Port_H = PORTA
- .equ Direct_H = DDRA
- .equ Port_L = PORTC
- .equ Direct_L = DDRC
- .equ Display_P = PORTD
- .equ Display_D = DDRD
- //= R9
- //= R10
- //= R11
- //= R12
- .def tmp_buf = R10
- .def ADDR_L = R13
- .def ADDR_H = R14
- .def IDX_REG_2 = R15
- .def SUB_REG_2 = R16
- .def IDX_REG = R17
- .def SUB_REG = R18
- .def seg = R19
- .def _ICs = R20
- .def sel = R21
- .def KBD_VALUE = R22
- .def delay_count = R23
- .def DELAY_CICLE_HIGH = R24
- .def DELAY_CICLE_LOW = R25
- //= R29
- //= R30
- //= R31
- .equ KEY_UP_BIT = PINB0
- .equ KEY_DOWN_BIT = PINB1
- .equ KEY_SEARCH_BIT = PINB2
- .equ KEY_TEST_BIT = PINB3
- .include "macro.inc"
- .DSEG
- sum: .db 4
- .CSEG
- .ORG 0x0000
- JMP start
- ; векторы прерываний
- .ORG INT0addr ; External Interrupt Request 0
- RETI
- .ORG INT1addr ; External Interrupt Request 1
- RETI
- .ORG OC2addr ; Timer/Counter2 Compare Match
- RETI
- .ORG OVF2addr ; Timer/Counter2 Overflow
- RETI
- .ORG ICP1addr ; Timer/Counter1 Capture Event
- RETI
- .ORG OC1Aaddr ; Timer/Counter1 Compare Match A
- RETI
- .ORG OC1Baddr ; Timer/Counter1 Compare Match B
- RETI
- .ORG OVF1addr ; Timer/Counter1 Overflow
- RETI
- .ORG OVF0addr ; Timer/Counter0 Overflow
- RETI
- .ORG SPIaddr ; Serial Transfer Complete
- RETI
- .ORG URXCaddr ; USART, Rx Complete
- RETI
- .ORG UDREaddr ; USART Data Register Empty
- RETI
- .ORG UTXCaddr ; USART, Tx Complete
- RETI
- .ORG ADCCaddr ; ADC Conversion Complete
- RETI
- .ORG ERDYaddr ; EEPROM Ready
- RETI
- .ORG ACIaddr ; Analog Comparator
- RETI
- .ORG TWIaddr ; 2-wire Serial Interface
- RETI
- .ORG INT2addr ; External Interrupt Request 2
- RETI
- .ORG OC0addr ; Timer/Counter0 Compare Match
- jmp ShowDisplay
- .ORG SPMRaddr ; Store Program Memory Ready
- RETI
- start:
- ; инициализация
- Init
- ; установка начала стека
- LDI R16,Low(RAMEND)
- OUT SPL,R16
- LDI R16,High(RAMEND)
- OUT SPH,R16
- ; настройка портов ввода-вывода
- rcall init_tester
- sei
- loop:
- in KBD_VALUE,PORTB
- sbrs KBD_VALUE,KEY_UP_BIT
- jmp key_up
- sbrs KBD_VALUE,KEY_DOWN_BIT
- jmp key_down
- sbrs KBD_VALUE,KEY_SEARCH_BIT
- jmp key_search
- sbrs KBD_VALUE,KEY_TEST_BIT
- jmp key_test
- jmp key_no
- key_up:
- cp sel,_ICs
- breq up_no
- inc sel
- ;sbi PORTA,PINA0;
- brcs up_ok
- up_no:
- ldi sel,0
- up_ok:
- rcall menu
- up_loop:
- sbis PORTB,KEY_UP_BIT
- rjmp up_loop
- rjmp key_no
- key_down:
- cpi sel,0
- breq down_no
- dec sel
- ;cbi PORTA,PINA0;
- brcc down_ok
- down_no:
- mov sel,_ICs
- down_ok:
- rcall menu
- down_loop:
- sbis PORTB,KEY_DOWN_BIT
- rjmp down_loop
- rjmp key_no
- key_search:
- search_loop:
- sbis PORTB,KEY_SEARCH_BIT
- rjmp search_loop
- rjmp key_no
- key_test:
- //indexed_call IC_table_1,sel,icall
- delay 200
- rjmp key_no
- key_no:
- ;rcall menu
- jmp loop
- .include "tester.inc"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement