Здравствуйте!
Я хочу освоить AVR'ы. Для начала скачал BASCOM-AVR 1.11.8.3, купил МК (какой был в магазине - ATtiny12L) и собрал тест-плату.
Моя первая программа, которая почему-то не захотела работать, выглядит так:
$regfile = "at12def.dat"
$crystal = 1000000
Config Portb.0 = Output
Config Portb.1 = Output
Config Portb.2 = Output
Dim Dl As Eram Byte
Dl = 255
Do
Portb = 0
Waitms Dl
Portb = 1
Waitms Dl
Loop
Я ожидал, что светодиодик на нулевом разряде порта B замигает (255мс горит, 255мс - нет). Ничего подобного не произошло.
Когда я дизассемблировал бинарник, чтобы полюбопытствовать, чего же там накомпилилось, то увидел, что вовсю употребляются команды, отсутствующие у ATtiny12: PUSH, POP, ST X,Rr. При этом ошибок во время компиляции не обнаружено.
Компилятор не знает, что у ATtiny12 нет регистра X ? Или я должен был как-то сообщить ему это? Зачем тогда существует файл at12def.dat?
Вот, например, кусок дизассемблированного кода:
00000000: C005 rjmp 0000000C
00000002: 9518 reti
00000004: 9518 reti
00000006: 9518 reti
00000008: 9518 reti
0000000A: 9518 reti
0000000C: 2466 clr r6
0000000E: 9AB8 sbi $17,0
00000010: 9AB9 sbi $17,1
00000012: 9ABA sbi $17,2
00000014: E0E0 ldi r30,#0
00000016: E0F0 ldi r31,#0
00000018: E1A0 ldi r26,#16
0000001A: 27BB clr r27
0000001C: EF8F ser r24
0000001E: 938C st x,r24
00000020: E77B ldi r23,#123
00000022: D02A rcall 00000078
по адресу 1Е стоит команда st x,r24.
Или ещё:
0000004C: 93EF push r30
0000004E: 93FF push r31
Ну и так далее... Что делать?
Отредактировано Русик (2007-03-13 05:18:24)