Program pisem a prekladam v AVR studiu v4, napalujem cez Pony Prog2000 do procesora ATMEGA168-20PU. Mam len zakladne zapojenie na rosvietenie dvoch led diod zapojenych na pinoch PD5 a PB0 cez rezistor voci zemi.
Prvy program napisany v c, prelozim aj napalim ok, funguje, ledky svietia:
Kód: Vybrat vše
#include <avr/io.h>
int main(void) {
// enable PD5,PB0 as output, Set PD5,PB0
DDRD = 0b00100000;
PORTD = 0b00100000;
DDRB = 0b00000001;
PORTB = 0b00000001;
while (1) {
}
return 0;
}
ten isty program ale v asemblery, prelozim aj napalim ok, ale nefunguje, tma:
Kód: Vybrat vše
.INCLUDE "m16def.inc"
.DEVICE ATMEGA16
.CSEG
// enable PD5,PB0 as output, Set PD5,PB0
LDI R16,0b00100000;
OUT DDRD,R16;
OUT PORTD,R16;
LDI R16,0b00000001;
OUT DDRB,R16;
OUT PORTB,R16;
SKOK: RJMP SKOK
Po nacitani hex suboru do ponyprogu je vidno ze hex subor z asemblera ma len 14 bytov a vsetko ostatne je $ff. hex subor z cecka tam ma toho o dost viac akoby v tom asm nieco chybalo ale neviem co. security bity som nemenil a su rovnake pre obe verzie. device v ponyprogu je nastavene na Atmega168.
Vie mi niekto kto s tym robi vysvetlit co je tam zle?