Uživatel:Trisktom
Z MAM wiki
- example LED-show program for ATtiny 2313
- 2-color LED with 300 Ohm resistor in series is supposed to be
- connected between pins 12 (PB0, LED_X) and 13 (PB1, LED_Y).
- Color1 shines when LED_X is high and LED_Y is low
- Color2 shines when LED_Y is high and LED_X is low
- LED is off when LED_Y and LED_X are both low or both high
.EQU DDRB = $17 ; DDRB address
.EQU PORTB = $18 ; PORTB address
.EQU DDRD = $17 ; DDRB address .EQU PORTD = $18 ; PORTB address
.EQU PINB =$16
.EQU LED_X = 0 ; LED_X is on PB0, pin 12 of ATtiny2313 .EQU LED_Y = 1 ; LED_Y is on PB1, pin 13 of ATtiny2313
- Pins connected to LED are outputs, DDRx=1 (set)
SBI DDRB, LED_X ; SBI - Set Bit in I/O Register SBI DDRB, LED_Y
SBI DDRD, 0 SBI PORTB, 2 GO: RCALL COLOR1 RCALL WAIT SBIS PINB, 2 RCALL COLOR2 RCALL WAIT RJMP GO
- P R O C E D U R E S
SMALLWAIT: INC R1 ; INC - Increment BRNE SMALLWAIT ; BRNE - Branch if Not Equal (Z flag) RET ; RET - Return from Subroutine
WAIT: LDI R16, 4 ; LDI - Load Immediate WAIT1: INC R1 BRNE WAIT1 INC R2 BRNE WAIT1 DEC R16 BRNE WAIT1 RET
COLOR1:
SBI PORTB, LED_X
CBI PORTB, LED_Y ; CBI - Clear Bit in I/O Register RET
COLOR2:
SBI PORTB, LED_Y
CBI PORTB, LED_X RET
COL3W: LDI R16, 2 COL3X: RCALL COLOR1 RCALL SMALLWAIT RCALL COLOR2 RCALL SMALLWAIT INC R2 BRNE COL3X DEC R16 BRNE COL3X
DARK:
CBI PORTB, LED_X
CBI PORTB, LED_Y RET
led:SBIS PINB,LED_X SBI PORTB,LED_X CBI PORTB,LED_X RET