Zabar31

Bascom avr, atmega8 и пара вопросов

5 сообщений в этой теме

Zabar31    9

 

Всех приветствую! Вообщем ситуация такая - (сейчас будет предыстория) стал понемногу интересоваться МК и набрел на статью о подключении экрана нокии 3310 к атмеге8. Вот она http://cxem.net/mc/mc201.php  Сказать что заинтриговало - ничего не сказать... к тому же автор в комментариях написал, что можно поочередно выводить изображения, и таким образом создать анимацию. Так вот, к чему я, была у меня монохромная моторолла и на ней был прикольный "скринсейвер" с рыбками, теперь который я хочу воссоздать. Надписей "Hello, world!" я не планирую, а только чистый вывод изображений.

Теперь сама суть моего обращения на форум.

1) Так как в Bascom я начинающий, решил идти по пути наименьшего сопротивления, то есть немного подправив код в проэкте, предоставленный автором статьи. Подправить то я его подправил, но вот правильно ли... Вообщем мне бы хотелось чтобы знающие люди проверили бы мой код. Хотя Bascom компилирует код без проблем.

Вот исходный код:

Скрытый текст

$regfile = "m8def.dat"
$crystal = 8000000
$hwstack = 32
$swstack = 8
$framesize = 52


Config Portc.2 = Output
D3310dc Alias Portc.2
Config Portc.3 = Output
D3310ce Alias Portc.3
Config Spi = Soft , Din = None , Dout = Portc.1 , Ss = None , Clock = Portc.0
Spiinit
$include "3310init.bas"

Call D3310init

Do
Call D3310clear
Call D3310position(0 , 0)
Call D3310print( "Hello, world!")
Call D3310position(0 , 3)
Call D3310print( "cxem.net")
Waitms 5000
Call D3310invert
Waitms 5000
Call D3310uninvert
Waitms 5000
Restore Img
Call D3310bmpout
Waitms 5000
Loop
End
$include "3310end.bas"

Img:
Data &H00 , &H04 , &H08 , &H30 , &H40 , &H80 , &H00 , &H00 , &H00 , &H01 , &H02 , &H04 , &H08 , &H10 , &H20 , &H40,
Data &H80 , &H00 , &H00 , &H00 , &H02 , &H04 , &H08 , &H08 , &H10 , &H20 , &H40 , &H40 , &H80 , &H00 , &H00 , &H00,
Data &H00 , &H02 , &H04 , &H04 , &H08 , &H10 , &H20 , &H20 , &H40 , &H80 , &H02 , &H04 , &H04 , &H08 , &H10 , &H90,
Data &HA0 , &H40 , &H20 , &H20 , &H10 , &H10 , &H08 , &H04 , &H04 , &H02 , &H02 , &H81 , &H80 , &H40 , &H40 , &H00,
Data &H10 , &H10 , &H08 , &HF8 , &HFC , &H02 , &H02 , &H01 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00,
Data &H00 , &H00 , &H00 , &H00 , &H04 , &H18 , &H60 , &H80 , &H00 , &H00 , &H03 , &H04 , &H08 , &H30 , &H40 , &H80,
Data &H00 , &H00 , &H00 , &H00 , &H00 , &H03 , &H04 , &H08 , &H10 , &H20 , &H40 , &H80 , &H00 , &H00 , &H00 , &H00,
Data &H00 , &H01 , &H02 , &H04 , &H04 , &H08 , &H90 , &H40 , &H40 , &H20 , &H20 , &H10 , &H08 , &H08 , &H04 , &H04,
Data &H02 , &H01 , &H01 , &H00 , &HC0 , &HE0 , &HC0 , &H00 , &H00 , &HF8 , &HFC , &H00 , &H00 , &HFF , &HFF , &H08,
Data &H08 , &H84 , &H84 , &H00 , &H00 , &H00 , &H00 , &H1F , &H0F , &H00 , &H80 , &H40 , &H40 , &H20 , &H10 , &H10,
Data &H08 , &H08 , &H04 , &H02 , &H02 , &H01 , &H00 , &H00 , &H60 , &H80 , &H00 , &H00 , &H03 , &H04 , &H18 , &H60,
Data &H80 , &H00 , &H00 , &H00 , &H03 , &H04 , &H08 , &H30 , &H40 , &H80 , &H00 , &H00 , &H00 , &H80 , &H40 , &H40,
Data &H21 , &H22 , &H10 , &H08 , &H08 , &H04 , &H02 , &H02 , &H01 , &HC1 , &HC0 , &HE0 , &H00 , &H00 , &H80 , &H78,
Data &HFC , &HFC , &H00 , &H00 , &H00 , &H80 , &H00 , &H00 , &HFF , &H7F , &H00 , &H03 , &H06 , &H1F , &H0F , &H00,
Data &H00 , &H83 , &H43 , &H41 , &H21 , &H20 , &H10 , &H08 , &H08 , &H04 , &H02 , &H02 , &H01 , &H21 , &H40 , &H40,
Data &H80 , &H80 , &H00 , &H01 , &H02 , &H04 , &H08 , &H08 , &H10 , &H20 , &H40 , &H00 , &H00 , &H01 , &H06 , &H18,
Data &H60 , &H80 , &H00 , &H80 , &H80 , &H43 , &H44 , &H20 , &H10 , &H10 , &H08 , &H08 , &H04 , &H82 , &H02 , &H01,
Data &H01 , &HE0 , &H20 , &H00 , &H00 , &HF8 , &HFC , &H44 , &H22 , &H22 , &H11 , &H00 , &H00 , &HFF , &HFF , &H01,
Data &H3E , &H30 , &H0F , &H00 , &H0F , &H0F , &H00 , &H00 , &H83 , &H81 , &H40 , &H20 , &H20 , &H10 , &H08 , &H88,
Data &H04 , &H04 , &H02 , &H01 , &H01 , &H00 , &H00 , &H00 , &H00 , &H04 , &H08 , &H08 , &H10 , &H20 , &H40 , &H40,
Data &H80 , &H00 , &H00 , &H00 , &H00 , &H00 , &H01 , &H02 , &H02 , &H04 , &H04 , &H08 , &H10 , &H10 , &H20 , &H40,
Data &H00 , &H08 , &H04 , &H04 , &H02 , &H02 , &H01 , &H80 , &HC0 , &H10 , &H10 , &H08 , &H0C , &H08 , &H00 , &H00,
Data &H03 , &HE3 , &H3E , &H0E , &H3F , &H38 , &H60 , &H00 , &H00 , &H1F , &H0F , &H08 , &H04 , &H04 , &H02 , &H80,
Data &H80 , &H40 , &H20 , &H20 , &H10 , &H10 , &H08 , &H04 , &H14 , &H22 , &H21 , &H41 , &H40 , &H80 , &H80 , &H00,
Data &H00 , &H00 , &H00 , &H00 , &H01 , &H01 , &H02 , &H02 , &H04 , &H04 , &H08 , &H10 , &H10 , &H20 , &H20 , &H40,
Data &H40 , &H80 , &H00 , &H00 , &H00 , &H01 , &H02 , &H02 , &H04 , &H08 , &H08 , &H10 , &H20 , &H40 , &H40 , &H80,
Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H1F , &H30 , &H20 , &H20 , &H10,
Data &H0C , &H04 , &H00 , &H04 , &H03 , &H00 , &H00 , &H00 , &H00 , &H00 , &H20 , &H10 , &H10 , &H08 , &H04 , &H04,
Data &H02 , &H06 , &H09 , &H08 , &H10 , &H20 , &H40 , &H40 , &H80 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00,
Data &H00 , &H00 , &H00 , &H01 , &H01 , &H02 , &H04 , &H04 , &H08 , &H08 , &H10 , &H10 , &H20 , &H20 , &H40 , &H00,
Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H01 , &H01 , &H02 , &H02 , &H04 , &H04 , &H08 , &H10 , &H10 , &H20,
Data &H20 , &H40 , &H40 , &H80 , &H01 , &H02 , &H02 , &H04

Вот мой код: (на одинаковость стека изображений не обращайте внимания, мои в процессе воссоздания, а мне нужна проверка самого принципа вывода изображений, который я написал)

Скрытый текст

$regfile = "m8def.dat"
$crystal = 8000000
$hwstack = 32
$swstack = 8
$framesize = 52


Config Portc.2 = Output
D3310dc Alias Portc.2
Config Portc.3 = Output
D3310ce Alias Portc.3
Config Spi = Soft , Din = None , Dout = Portc.1 , Ss = None , Clock = Portc.0
Spiinit
$include "3310init.bas"

Call D3310init

Do
Call D3310clear
Restore Img
Call D3310bmpout
Waitms 1000
Call D3310clear
Restore Img1
Call D3310bmpout
Waitms 1000
Call D3310clear
Restore Img2
Call D3310bmpout
Waitms 1000
Loop
End
$include "3310end.bas"

Img:
Data &H00 , &H04 , &H08 , &H30 , &H40 , &H80 , &H00 , &H00 , &H00 , &H01 , &H02 , &H04 , &H08 , &H10 , &H20 , &H40,
Data &H80 , &H00 , &H00 , &H00 , &H02 , &H04 , &H08 , &H08 , &H10 , &H20 , &H40 , &H40 , &H80 , &H00 , &H00 , &H00,
Data &H00 , &H02 , &H04 , &H04 , &H08 , &H10 , &H20 , &H20 , &H40 , &H80 , &H02 , &H04 , &H04 , &H08 , &H10 , &H90,
Data &HA0 , &H40 , &H20 , &H20 , &H10 , &H10 , &H08 , &H04 , &H04 , &H02 , &H02 , &H81 , &H80 , &H40 , &H40 , &H00,
Data &H10 , &H10 , &H08 , &HF8 , &HFC , &H02 , &H02 , &H01 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00,
Data &H00 , &H00 , &H00 , &H00 , &H04 , &H18 , &H60 , &H80 , &H00 , &H00 , &H03 , &H04 , &H08 , &H30 , &H40 , &H80,
Data &H00 , &H00 , &H00 , &H00 , &H00 , &H03 , &H04 , &H08 , &H10 , &H20 , &H40 , &H80 , &H00 , &H00 , &H00 , &H00,
Data &H00 , &H01 , &H02 , &H04 , &H04 , &H08 , &H90 , &H40 , &H40 , &H20 , &H20 , &H10 , &H08 , &H08 , &H04 , &H04,
Data &H02 , &H01 , &H01 , &H00 , &HC0 , &HE0 , &HC0 , &H00 , &H00 , &HF8 , &HFC , &H00 , &H00 , &HFF , &HFF , &H08,
Data &H08 , &H84 , &H84 , &H00 , &H00 , &H00 , &H00 , &H1F , &H0F , &H00 , &H80 , &H40 , &H40 , &H20 , &H10 , &H10,
Data &H08 , &H08 , &H04 , &H02 , &H02 , &H01 , &H00 , &H00 , &H60 , &H80 , &H00 , &H00 , &H03 , &H04 , &H18 , &H60,
Data &H80 , &H00 , &H00 , &H00 , &H03 , &H04 , &H08 , &H30 , &H40 , &H80 , &H00 , &H00 , &H00 , &H80 , &H40 , &H40,
Data &H21 , &H22 , &H10 , &H08 , &H08 , &H04 , &H02 , &H02 , &H01 , &HC1 , &HC0 , &HE0 , &H00 , &H00 , &H80 , &H78,
Data &HFC , &HFC , &H00 , &H00 , &H00 , &H80 , &H00 , &H00 , &HFF , &H7F , &H00 , &H03 , &H06 , &H1F , &H0F , &H00,
Data &H00 , &H83 , &H43 , &H41 , &H21 , &H20 , &H10 , &H08 , &H08 , &H04 , &H02 , &H02 , &H01 , &H21 , &H40 , &H40,
Data &H80 , &H80 , &H00 , &H01 , &H02 , &H04 , &H08 , &H08 , &H10 , &H20 , &H40 , &H00 , &H00 , &H01 , &H06 , &H18,
Data &H60 , &H80 , &H00 , &H80 , &H80 , &H43 , &H44 , &H20 , &H10 , &H10 , &H08 , &H08 , &H04 , &H82 , &H02 , &H01,
Data &H01 , &HE0 , &H20 , &H00 , &H00 , &HF8 , &HFC , &H44 , &H22 , &H22 , &H11 , &H00 , &H00 , &HFF , &HFF , &H01,
Data &H3E , &H30 , &H0F , &H00 , &H0F , &H0F , &H00 , &H00 , &H83 , &H81 , &H40 , &H20 , &H20 , &H10 , &H08 , &H88,
Data &H04 , &H04 , &H02 , &H01 , &H01 , &H00 , &H00 , &H00 , &H00 , &H04 , &H08 , &H08 , &H10 , &H20 , &H40 , &H40,
Data &H80 , &H00 , &H00 , &H00 , &H00 , &H00 , &H01 , &H02 , &H02 , &H04 , &H04 , &H08 , &H10 , &H10 , &H20 , &H40,
Data &H00 , &H08 , &H04 , &H04 , &H02 , &H02 , &H01 , &H80 , &HC0 , &H10 , &H10 , &H08 , &H0C , &H08 , &H00 , &H00,
Data &H03 , &HE3 , &H3E , &H0E , &H3F , &H38 , &H60 , &H00 , &H00 , &H1F , &H0F , &H08 , &H04 , &H04 , &H02 , &H80,
Data &H80 , &H40 , &H20 , &H20 , &H10 , &H10 , &H08 , &H04 , &H14 , &H22 , &H21 , &H41 , &H40 , &H80 , &H80 , &H00,
Data &H00 , &H00 , &H00 , &H00 , &H01 , &H01 , &H02 , &H02 , &H04 , &H04 , &H08 , &H10 , &H10 , &H20 , &H20 , &H40,
Data &H40 , &H80 , &H00 , &H00 , &H00 , &H01 , &H02 , &H02 , &H04 , &H08 , &H08 , &H10 , &H20 , &H40 , &H40 , &H80,
Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H1F , &H30 , &H20 , &H20 , &H10,
Data &H0C , &H04 , &H00 , &H04 , &H03 , &H00 , &H00 , &H00 , &H00 , &H00 , &H20 , &H10 , &H10 , &H08 , &H04 , &H04,
Data &H02 , &H06 , &H09 , &H08 , &H10 , &H20 , &H40 , &H40 , &H80 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00,
Data &H00 , &H00 , &H00 , &H01 , &H01 , &H02 , &H04 , &H04 , &H08 , &H08 , &H10 , &H10 , &H20 , &H20 , &H40 , &H00,
Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H01 , &H01 , &H02 , &H02 , &H04 , &H04 , &H08 , &H10 , &H10 , &H20,
Data &H20 , &H40 , &H40 , &H80 , &H01 , &H02 , &H02 , &H04

Img1:
Data &H00 , &H04 , &H08 , &H30 , &H40 , &H80 , &H00 , &H00 , &H00 , &H01 , &H02 , &H04 , &H08 , &H10 , &H20 , &H40,
Data &H80 , &H00 , &H00 , &H00 , &H02 , &H04 , &H08 , &H08 , &H10 , &H20 , &H40 , &H40 , &H80 , &H00 , &H00 , &H00,
Data &H00 , &H02 , &H04 , &H04 , &H08 , &H10 , &H20 , &H20 , &H40 , &H80 , &H02 , &H04 , &H04 , &H08 , &H10 , &H90,
Data &HA0 , &H40 , &H20 , &H20 , &H10 , &H10 , &H08 , &H04 , &H04 , &H02 , &H02 , &H81 , &H80 , &H40 , &H40 , &H00,
Data &H10 , &H10 , &H08 , &HF8 , &HFC , &H02 , &H02 , &H01 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00,
Data &H00 , &H00 , &H00 , &H00 , &H04 , &H18 , &H60 , &H80 , &H00 , &H00 , &H03 , &H04 , &H08 , &H30 , &H40 , &H80,
Data &H00 , &H00 , &H00 , &H00 , &H00 , &H03 , &H04 , &H08 , &H10 , &H20 , &H40 , &H80 , &H00 , &H00 , &H00 , &H00,
Data &H00 , &H01 , &H02 , &H04 , &H04 , &H08 , &H90 , &H40 , &H40 , &H20 , &H20 , &H10 , &H08 , &H08 , &H04 , &H04,
Data &H02 , &H01 , &H01 , &H00 , &HC0 , &HE0 , &HC0 , &H00 , &H00 , &HF8 , &HFC , &H00 , &H00 , &HFF , &HFF , &H08,
Data &H08 , &H84 , &H84 , &H00 , &H00 , &H00 , &H00 , &H1F , &H0F , &H00 , &H80 , &H40 , &H40 , &H20 , &H10 , &H10,
Data &H08 , &H08 , &H04 , &H02 , &H02 , &H01 , &H00 , &H00 , &H60 , &H80 , &H00 , &H00 , &H03 , &H04 , &H18 , &H60,
Data &H80 , &H00 , &H00 , &H00 , &H03 , &H04 , &H08 , &H30 , &H40 , &H80 , &H00 , &H00 , &H00 , &H80 , &H40 , &H40,
Data &H21 , &H22 , &H10 , &H08 , &H08 , &H04 , &H02 , &H02 , &H01 , &HC1 , &HC0 , &HE0 , &H00 , &H00 , &H80 , &H78,
Data &HFC , &HFC , &H00 , &H00 , &H00 , &H80 , &H00 , &H00 , &HFF , &H7F , &H00 , &H03 , &H06 , &H1F , &H0F , &H00,
Data &H00 , &H83 , &H43 , &H41 , &H21 , &H20 , &H10 , &H08 , &H08 , &H04 , &H02 , &H02 , &H01 , &H21 , &H40 , &H40,
Data &H80 , &H80 , &H00 , &H01 , &H02 , &H04 , &H08 , &H08 , &H10 , &H20 , &H40 , &H00 , &H00 , &H01 , &H06 , &H18,
Data &H60 , &H80 , &H00 , &H80 , &H80 , &H43 , &H44 , &H20 , &H10 , &H10 , &H08 , &H08 , &H04 , &H82 , &H02 , &H01,
Data &H01 , &HE0 , &H20 , &H00 , &H00 , &HF8 , &HFC , &H44 , &H22 , &H22 , &H11 , &H00 , &H00 , &HFF , &HFF , &H01,
Data &H3E , &H30 , &H0F , &H00 , &H0F , &H0F , &H00 , &H00 , &H83 , &H81 , &H40 , &H20 , &H20 , &H10 , &H08 , &H88,
Data &H04 , &H04 , &H02 , &H01 , &H01 , &H00 , &H00 , &H00 , &H00 , &H04 , &H08 , &H08 , &H10 , &H20 , &H40 , &H40,
Data &H80 , &H00 , &H00 , &H00 , &H00 , &H00 , &H01 , &H02 , &H02 , &H04 , &H04 , &H08 , &H10 , &H10 , &H20 , &H40,
Data &H00 , &H08 , &H04 , &H04 , &H02 , &H02 , &H01 , &H80 , &HC0 , &H10 , &H10 , &H08 , &H0C , &H08 , &H00 , &H00,
Data &H03 , &HE3 , &H3E , &H0E , &H3F , &H38 , &H60 , &H00 , &H00 , &H1F , &H0F , &H08 , &H04 , &H04 , &H02 , &H80,
Data &H80 , &H40 , &H20 , &H20 , &H10 , &H10 , &H08 , &H04 , &H14 , &H22 , &H21 , &H41 , &H40 , &H80 , &H80 , &H00,
Data &H00 , &H00 , &H00 , &H00 , &H01 , &H01 , &H02 , &H02 , &H04 , &H04 , &H08 , &H10 , &H10 , &H20 , &H20 , &H40,
Data &H40 , &H80 , &H00 , &H00 , &H00 , &H01 , &H02 , &H02 , &H04 , &H08 , &H08 , &H10 , &H20 , &H40 , &H40 , &H80,
Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H1F , &H30 , &H20 , &H20 , &H10,
Data &H0C , &H04 , &H00 , &H04 , &H03 , &H00 , &H00 , &H00 , &H00 , &H00 , &H20 , &H10 , &H10 , &H08 , &H04 , &H04,
Data &H02 , &H06 , &H09 , &H08 , &H10 , &H20 , &H40 , &H40 , &H80 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00,
Data &H00 , &H00 , &H00 , &H01 , &H01 , &H02 , &H04 , &H04 , &H08 , &H08 , &H10 , &H10 , &H20 , &H20 , &H40 , &H00,
Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H01 , &H01 , &H02 , &H02 , &H04 , &H04 , &H08 , &H10 , &H10 , &H20,
Data &H20 , &H40 , &H40 , &H80 , &H01 , &H02 , &H02 , &H04

Img2:
Data &H00 , &H04 , &H08 , &H30 , &H40 , &H80 , &H00 , &H00 , &H00 , &H01 , &H02 , &H04 , &H08 , &H10 , &H20 , &H40,
Data &H80 , &H00 , &H00 , &H00 , &H02 , &H04 , &H08 , &H08 , &H10 , &H20 , &H40 , &H40 , &H80 , &H00 , &H00 , &H00,
Data &H00 , &H02 , &H04 , &H04 , &H08 , &H10 , &H20 , &H20 , &H40 , &H80 , &H02 , &H04 , &H04 , &H08 , &H10 , &H90,
Data &HA0 , &H40 , &H20 , &H20 , &H10 , &H10 , &H08 , &H04 , &H04 , &H02 , &H02 , &H81 , &H80 , &H40 , &H40 , &H00,
Data &H10 , &H10 , &H08 , &HF8 , &HFC , &H02 , &H02 , &H01 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00,
Data &H00 , &H00 , &H00 , &H00 , &H04 , &H18 , &H60 , &H80 , &H00 , &H00 , &H03 , &H04 , &H08 , &H30 , &H40 , &H80,
Data &H00 , &H00 , &H00 , &H00 , &H00 , &H03 , &H04 , &H08 , &H10 , &H20 , &H40 , &H80 , &H00 , &H00 , &H00 , &H00,
Data &H00 , &H01 , &H02 , &H04 , &H04 , &H08 , &H90 , &H40 , &H40 , &H20 , &H20 , &H10 , &H08 , &H08 , &H04 , &H04,
Data &H02 , &H01 , &H01 , &H00 , &HC0 , &HE0 , &HC0 , &H00 , &H00 , &HF8 , &HFC , &H00 , &H00 , &HFF , &HFF , &H08,
Data &H08 , &H84 , &H84 , &H00 , &H00 , &H00 , &H00 , &H1F , &H0F , &H00 , &H80 , &H40 , &H40 , &H20 , &H10 , &H10,
Data &H08 , &H08 , &H04 , &H02 , &H02 , &H01 , &H00 , &H00 , &H60 , &H80 , &H00 , &H00 , &H03 , &H04 , &H18 , &H60,
Data &H80 , &H00 , &H00 , &H00 , &H03 , &H04 , &H08 , &H30 , &H40 , &H80 , &H00 , &H00 , &H00 , &H80 , &H40 , &H40,
Data &H21 , &H22 , &H10 , &H08 , &H08 , &H04 , &H02 , &H02 , &H01 , &HC1 , &HC0 , &HE0 , &H00 , &H00 , &H80 , &H78,
Data &HFC , &HFC , &H00 , &H00 , &H00 , &H80 , &H00 , &H00 , &HFF , &H7F , &H00 , &H03 , &H06 , &H1F , &H0F , &H00,
Data &H00 , &H83 , &H43 , &H41 , &H21 , &H20 , &H10 , &H08 , &H08 , &H04 , &H02 , &H02 , &H01 , &H21 , &H40 , &H40,
Data &H80 , &H80 , &H00 , &H01 , &H02 , &H04 , &H08 , &H08 , &H10 , &H20 , &H40 , &H00 , &H00 , &H01 , &H06 , &H18,
Data &H60 , &H80 , &H00 , &H80 , &H80 , &H43 , &H44 , &H20 , &H10 , &H10 , &H08 , &H08 , &H04 , &H82 , &H02 , &H01,
Data &H01 , &HE0 , &H20 , &H00 , &H00 , &HF8 , &HFC , &H44 , &H22 , &H22 , &H11 , &H00 , &H00 , &HFF , &HFF , &H01,
Data &H3E , &H30 , &H0F , &H00 , &H0F , &H0F , &H00 , &H00 , &H83 , &H81 , &H40 , &H20 , &H20 , &H10 , &H08 , &H88,
Data &H04 , &H04 , &H02 , &H01 , &H01 , &H00 , &H00 , &H00 , &H00 , &H04 , &H08 , &H08 , &H10 , &H20 , &H40 , &H40,
Data &H80 , &H00 , &H00 , &H00 , &H00 , &H00 , &H01 , &H02 , &H02 , &H04 , &H04 , &H08 , &H10 , &H10 , &H20 , &H40,
Data &H00 , &H08 , &H04 , &H04 , &H02 , &H02 , &H01 , &H80 , &HC0 , &H10 , &H10 , &H08 , &H0C , &H08 , &H00 , &H00,
Data &H03 , &HE3 , &H3E , &H0E , &H3F , &H38 , &H60 , &H00 , &H00 , &H1F , &H0F , &H08 , &H04 , &H04 , &H02 , &H80,
Data &H80 , &H40 , &H20 , &H20 , &H10 , &H10 , &H08 , &H04 , &H14 , &H22 , &H21 , &H41 , &H40 , &H80 , &H80 , &H00,
Data &H00 , &H00 , &H00 , &H00 , &H01 , &H01 , &H02 , &H02 , &H04 , &H04 , &H08 , &H10 , &H10 , &H20 , &H20 , &H40,
Data &H40 , &H80 , &H00 , &H00 , &H00 , &H01 , &H02 , &H02 , &H04 , &H08 , &H08 , &H10 , &H20 , &H40 , &H40 , &H80,
Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H1F , &H30 , &H20 , &H20 , &H10,
Data &H0C , &H04 , &H00 , &H04 , &H03 , &H00 , &H00 , &H00 , &H00 , &H00 , &H20 , &H10 , &H10 , &H08 , &H04 , &H04,
Data &H02 , &H06 , &H09 , &H08 , &H10 , &H20 , &H40 , &H40 , &H80 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00,
Data &H00 , &H00 , &H00 , &H01 , &H01 , &H02 , &H04 , &H04 , &H08 , &H08 , &H10 , &H10 , &H20 , &H20 , &H40 , &H00,
Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H01 , &H01 , &H02 , &H02 , &H04 , &H04 , &H08 , &H10 , &H10 , &H20,
Data &H20 , &H40 , &H40 , &H80 , &H01 , &H02 , &H02 , &H04

Таким образом я хочу выводить изображения поочередно с интервалом в 1 секунду.

2)Еще более интересующий меня вопрос - если открыть даташит на атмега8, то там написано, что флеш памяти для программ 8 кб. Но вот что интересно и вводит меня в ступор. Если просто взять проэкт автора статьи и скомпилировать его в .hex, то получаем: Bascom пишет при компиляции "Flash used - 55%", то есть как бы половина атмеги пустая, но вот выходной файл .hex имеет размер 13кб. Вот я и не могу понять как даже авторский проэкт в 13кб прошивается в атмегу с 8кб? Магия наверное. Скомпилировав "свой" проэкт, я получаю  "Flash used - 66%" и файл на 15кб. Вот и возник такой вопрос - это нормально и так и должно быть? А если нет - то как правильно скомпилировать?

Так как пока проверить код в железе нет возможности (еще едет), вот к Вам, знающим людям, за помощью и обращаюсь. Ниже прикрепляю видеофайл с  компиляцией проэкта автора статьи в Bascom.

 clip0002.avi

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Быстрый заказ печатных плат

Полный цикл производства PCB по низким ценам!

  • x
    мм
Заказать Получить купон на $5.00
COKPOWEHEU    248

Лучше бы начали на ассемблере или хотя бы Си. Совсем рядом есть видеокурс, где рассматривается и дисплей от nokia3310.

55 минут назад, Zabar31 сказал:

при компиляции "Flash used - 55%", то есть как бы половина атмеги пустая, но вот выходной файл .hex имеет размер 13кб.

*.hex файл не бинарный, а текстовый. Каждый байт прошивки закодирован двумя символами (например, 0x5A это '5' и 'A', или 0x3541. Плюс служебная информация вроде адреса начала, LRC-кода и прочего.

58 минут назад, Zabar31 сказал:

Так как пока проверить код в железе нет возможности

Протеус в помощь

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Zabar31    9

COKPOWEHEU, за видеокурс - спасибо, буду изучать. По .hex тоже стало понятно, спасибо.

Про протеус думал, и даже пробовал, но вот у меня он не хочет запускать симуляцию, ругается на отсутствие dll файла экрана 3310, я даже скачивал с радиокота этот файл, но пока побороть ошибку не могу.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Zabar31    9

@COKPOWEHEU , да, оказывается 7-я версия нужна была, а я мучался с 8. На 7-й все сразу заработало.

И еще раз спасибо за видеокурс - очень интересно и главное обстоятельно рассказывают что, как и куда.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ваша публикация должна быть проверена модератором

Гость
Вы не авторизованы. Если у вас есть аккаунт, пожалуйста, войдите.
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Восстановить форматирование

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Загрузка...

  • Похожие публикации

    • Автор: myrka
      Доброго дня! 
      Купил на барахолке вот такую плату





      на последней фото 2 черных провода в дальнейшем соединены 
      Это бегущая строка от игровых автоматов, на ней 2-мя цветами отображаются слоганы, хочу перепрошить в целях обучения.
      Вопросы:
      1) встречал ли кто-то описание этой микросхемы? (я в интернете не нашел, потратил 2 дня)
      2) есть на микросхеме разъем (10 ножек хорошо видно на последнем фото), как узнать их имена, за что отвечает каждая ножка? (есть некоторые предположения, но сомневаюсь в них)
      3) можно ли через CP2102-USB-UART-MODULE перепрошить вот эту микросхему, если да то как соединить?
    • Автор: Atreides
      Добрый день. Мне требуется реализовать программный юарт на атмеге16. Он нужен для того, чтобы принятые по нему данные отправить на аппаратный юарт. В интернете нашел примеры кода, но понять его мне трудно. Прошу вас словами в общих чертах объяснить принцип реализации программного юарта. Буду рад примерам, которые, на ваш взгляд, являются наиболее простыми и понятными. Заранее спасибо.
    • Автор: EugenArt
      Всем доброго времени суток!
      в поиске не смог найти инфо, поэтому создал тему, не ругайте, если ошибся с веткой.
      Идея следующая, есть автомагнитола deh-3600MP c выходом Ip-bus.Хочу подружить магнитофон с мп3 плеером (есть от фм-трансмиттера, завтра куплю платку отдельного мп3). Сразу подчеркну, что хочу управление плеером (треки, теги, пауза и т.д) с головного устройства.
      предполагаю схему так:  ip-bus - avr - mp3 player.
      алгоритм avr-mp3 несложен и открыт, а вот описание протокола ip-bus нигде нет, форум витат.спб уже изучил, есть кусок кода работы авр и ip-bus, но не очень понятно, может подскажете набор команд ip-bus или что происходит по событию нажатию кнопки вперед/назад.
      Заранее благодарен.
    • Автор: balistik
      Всем доброго времени суток. Я реальный нуб в ATMEGA. Могу более-менее понять чужой код и из кусков сделать целое. Вопрос такой: реально ли на ATMEGA8 сделать 2 ШИМ (таймер 1 и2) и внутреннее прерывание (по таймеру 0) для чтения данных с DS18B20 на 8Мгц чтобы еще осталось на опрос кнопок и небольшую логику? Я выложу пример кода. По отдельность: ШИМ, прерывания, логика, запись в ЕПРОМ работает. Собираю все вместе - не работает. Пробовал в Протеусе, тоже глючит, да и протеус тормозит. Может кто чего подскажет.
      //#define F_CPU 8000000UL // устанавливаем рабочую частоту контроллера #include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> #include <avr/eeprom.h> #include "ds18x20.h" #include "onewire.h" #define MAXSENSORS 1 unsigned int tempint = 0; // переменная для целого значения температуры unsigned int subzero = 0; // переменная отрицательных значений температуры unsigned int clock = 0; //задержка для опроса датчика температуры unsigned int termo_error = 0; //флаг ошибки термодатчика unsigned char regim, R1_SHIBER, R1_VENT, R2_SHIBER, R2_VENT, R3_SHIBER, R3_VENT; //переменные режимов работы volatile char press = 0, pr = 0, pr1 = 0, set = 0; //дополнительные переменные для кнопок #define SHIBER_PB 1 //шибер подачи топлива #define SHIBER_PWM OCR1A #define VENT_PB 2 //вентилятор подачи воздуха #define VENT_PWM OCR1B #define LED1_ON PORTD |= _BV(PD3) // светодиод режим 1 #define LED1_OFF PORTD &= ~_BV(PD3) #define LED2_ON PORTD |= _BV(PD4) // светодиод режим 2 #define LED2_OFF PORTD &= ~_BV(PD4) #define LED3_ON PORTD |= _BV(PD6) // светодиод режим 3 #define LED3_OFF PORTD &= ~_BV(PD6) #define LED4_ON PORTD |= _BV(PD7) // светодиод 4 программирование #define LED4_OFF PORTD &= ~_BV(PD7) #define BUT_M PIND & (1 << PD1) // кнопка MENU #define BUT_U PIND & (1 << PD2) // кнопка UP #define BUT_D PIND & (1 << PD0) // кнопка DOWN unsigned char eep1 EEMEM; // режим работы unsigned char eep2 EEMEM; // режим 1 ШИМ вентилятор unsigned char eep3 EEMEM; //режим 1 ШИМ шибер unsigned char eep4 EEMEM; // режим 2 ШИМ вентилятор unsigned char eep5 EEMEM; // режим 2 ШИМ шибер unsigned char eep6 EEMEM; // режим 3 ШИМ вентилятор unsigned char eep7 EEMEM; // режим 3 ШИМ шибер unsigned char eep8 EEMEM; // флаг первого запуска uint8_t Temperature, szero; //-255 uint8_t nSensors, j; uint8_t cel_frac_bits; uint8_t gSensorIDs[MAXSENSORS][OW_ROMCODE_SIZE]; uint8_t search_sensors(void) // поиск DS18B20 { uint8_t i; uint8_t id[OW_ROMCODE_SIZE]; uint8_t diff, nSensors; nSensors = 0; for( diff = OW_SEARCH_FIRST; diff != OW_LAST_DEVICE && nSensors < MAXSENSORS ; ) { DS18X20_find_sensor( &diff, &id[0] ); if( diff == OW_PRESENCE_ERR ) { Temperature = 255; szero = 1; break; } if( diff == OW_DATA_ERR ) { Temperature = 255; szero = 1; break; } for (i=0; i<OW_ROMCODE_SIZE; i++) gSensorIDs[nSensors][i]=id[i]; nSensors++; } return nSensors; } void get_temp(int sensor){ // получаем температуру с датчиков DS18X20_start_meas(DS18X20_POWER_EXTERN, NULL); DS18X20_start_meas(DS18X20_POWER_EXTERN, NULL); j = gSensorIDs[0][sensor]; // family-code for conversion-routine if (DS18X20_read_meas_single(j, &szero, &Temperature, &cel_frac_bits) != DS18X20_OK) { //если не прочиталось то -255 Temperature = 255; szero = 1; } if (DS18X20_read_meas_single(j, &szero, &Temperature, &cel_frac_bits) != DS18X20_OK) { //если не прочиталось то -255 Temperature = 255; szero = 1; } tempint=(int)Temperature; subzero=(int)szero; } void pin_init(void) { //инициализация портов ШИМ DDRB |= (1<<SHIBER_PB) | (1<<VENT_PB); PORTB &= ~((1<<SHIBER_PB) | (1<<VENT_PB)); } void timer0_init(void) { //инициализация таймера для термодатчика TCCR0 |= (1<<CS00); TIMSK |= ( 1 << TOIE0); TCNT0 = 0xFF; } void timer1_init(void) { //инициализация таймера ШИМ шибера TCCR1A |= (1 << COM1A1) | (1 << COM1B1) | (1 << WGM11); TCCR1B |= (1 << WGM13) | (1 << WGM12) | (1 << CS10); TCNT1 = 0x00; ICR1 = 0xFF; OCR1A = 0x00; OCR1B = 0x00; } void timer2_init(void) { //инициализация таймера ШИМ вентилятора TCCR2 |= (1 << COM21) | (1 << WGM21) | (1 << WGM20) | (1 << CS20); TCNT2 = 0x00; OCR2 = 0x00; } ISR(TIMER0_OVF_vect){ //прерывание таймера 0 для термодатчика if (clock != 4294967295){_delay_us(50);clock++;}else{get_temp(0);clock=0;} } //***************** обработка нажатия кнопок ********************** void buttons(){ if(~BUT_U){if(set == 0)pr++; // кнопка UP if(pr == 10){ // долгое нажатие } _delay_ms(100); }else{ if(pr >= 1 && pr < 10){ // короткое нажатие regim++; if (regim>3){regim=0;} eeprom_write_byte(&eep1, regim); // сохранение настройки в eeprom set = 0; pr = 0; } pr = 0; } if(~BUT_D){if(set == 0)pr1++; // кнопка DOWN if(pr1 == 10){ // длинное нажатие } _delay_ms(100); }else{ if(pr1 >= 1 && pr1 < 10){ // короткое нажатие. //set = 20; regim--; if (regim<0){regim=3;} eeprom_write_byte(&eep1, regim); // сохранение настройки в eeprom _delay_ms(100); set = 0; pr1 = 0; } pr1 = 0; } if(~BUT_M){ // кнопка MENU press++; if(press == 1 && set != 0){set++;} // переход по настройкам if(press >= 100 && set == 0){set = 1; _delay_ms(200);} // ход в настройки if(set == 1) eeprom_write_byte(&eep2, R1_VENT); if(set == 2) eeprom_write_byte(&eep3, R1_SHIBER); if(set == 3) eeprom_write_byte(&eep4, R2_VENT); if(set == 4) eeprom_write_byte(&eep5, R2_SHIBER); if(set == 5) eeprom_write_byte(&eep6, R3_VENT); if(set == 6) eeprom_write_byte(&eep7, R3_SHIBER); if(set > 6){ _delay_ms(100); set = 0; press = 0;} // если включена настройка даты, }else{ if(set == 0 && press >= 1){ // если не вошли в настройки regim++; if (regim>3){regim=0;} eeprom_write_byte(&eep1, regim); // сохранение настройки в eeprom } press = 0; } } //*****************режим настроек******************** void settings(){ //визуальное подтверждение настроек if(press >= 1 && set == 1) { LED1_ON; LED2_OFF; LED3_OFF; LED4_ON; SHIBER_PWM = R1_VENT;} //ШИМ шибер 0-255 if(press >= 1 && set == 2) { LED1_ON; LED2_OFF; LED3_OFF; LED4_ON; VENT_PWM = R1_SHIBER;} //ШИМ вентилятор 0-255 if(press >= 1 && set == 3) { LED1_OFF; LED2_ON; LED3_OFF; LED4_ON; SHIBER_PWM = R2_VENT;} //ШИМ шибер 0-255 if(press >= 1 && set == 4) { LED1_OFF; LED2_ON; LED3_OFF; LED4_ON; VENT_PWM = R2_SHIBER;} //ШИМ вентилятор 0-255 if(press >= 1 && set == 5) { LED1_OFF; LED2_OFF; LED3_ON; LED4_ON; SHIBER_PWM = R3_VENT;} //ШИМ шибер 0-255 if(press >= 1 && set == 6) { LED1_OFF; LED2_OFF; LED3_ON; LED4_ON; VENT_PWM = R3_SHIBER;} //ШИМ вентилятор 0-255 switch(set) // включена настройка { case 1: // настройка R1_VENT if(~BUT_U){R1_VENT++; if(R1_VENT > 254) R1_VENT = 0; _delay_ms(100);} if(~BUT_D){R1_VENT--; if((~BUT_D) && R1_VENT == 0) R1_VENT = 254; _delay_ms(100);} break; case 2: // настройка R1_SHIBER if(~BUT_U){R1_SHIBER++; if(R1_SHIBER > 254) R1_SHIBER = 0; _delay_ms(100);} if(~BUT_D){R1_SHIBER--; if((~BUT_D) && R1_SHIBER == 0) R1_SHIBER = 254; _delay_ms(100);} break; case 3: // настройка R2_VENT if(~BUT_U){R2_VENT++; if(R2_VENT > 254) R2_VENT = 0; _delay_ms(100);} if(~BUT_D){R2_VENT--; if((~BUT_D) && R2_VENT == 0) R2_VENT = 254; _delay_ms(100);} break; case 4: // настройка R2_SHIBER if(~BUT_U){R2_SHIBER++; if(R2_SHIBER > 254) R2_SHIBER = 0; _delay_ms(100);} if(~BUT_D){R2_SHIBER--; if((~BUT_D) && R2_SHIBER == 0) R2_SHIBER = 254; _delay_ms(100);} break; case 5: // настройка R3_VENT if(~BUT_U){R3_VENT++; if(R3_VENT > 254) R3_VENT = 0; _delay_ms(100);} if(~BUT_D){R3_VENT--; if((~BUT_D) && R3_VENT == 0) R3_VENT = 254; _delay_ms(100);} break; case 6: // настройка R3_SHIBER if(~BUT_U){R3_SHIBER++; if(R3_SHIBER > 254) R3_SHIBER = 0; _delay_ms(100);} if(~BUT_D){R3_SHIBER--; if((~BUT_D) && R3_SHIBER == 0) R3_SHIBER = 254; _delay_ms(100);} break; } } int main(){ /*******************************настройка переферии******************************/ cli(); ow_set_bus(&PIND, &PORTD, &DDRD, PD5); // иництализация протокола 1-wire nSensors = search_sensors(); // поиск датчиков DS18B20 DS18X20_start_meas(DS18X20_POWER_EXTERN, NULL); //включаем преобразование температуры pin_init(); //timer0_init(); timer1_init(); timer2_init(); _delay_ms(5); if(eeprom_read_byte(&eep8) != 1){ // читаем eeprom, если там мусор (первый запуск), пишем свои данные eeprom_write_byte(&eep1, 0); // режим работы eeprom_write_byte(&eep2, 150); // режим 1 ШИМ вентилятор eeprom_write_byte(&eep3, 100); //режим 1 ШИМ шибер eeprom_write_byte(&eep4, 200); //режим 2 ШИМ вентилятор eeprom_write_byte(&eep5, 150); //режим 2 ШИМ шибер eeprom_write_byte(&eep6, 230); //режим 3 ШИМ вентилятор eeprom_write_byte(&eep7, 200); //режим 3 ШИМ шибер eeprom_write_byte(&eep8, 1); // флаг первого запуска } //читаем настройки из памяти regim = eeprom_read_byte(&eep1); // читаем режим работы из eeprom R1_VENT = eeprom_read_byte(&eep2); // читаем режим 1 ШИМ вентилятор из eeprom R1_SHIBER = eeprom_read_byte(&eep3); //читаем режим 1 ШИМ шибер R2_VENT = eeprom_read_byte(&eep4); //читаем режим 2 ШИМ вентилятор R1_SHIBER = eeprom_read_byte(&eep5); //читаем режим 2 ШИМ шибер R3_VENT = eeprom_read_byte(&eep6); //читаем режим 3 ШИМ вентилятор R1_SHIBER = eeprom_read_byte(&eep7); //читаем режим 3 ШИМ шибер sei(); _delay_ms(5); /**********************************инициализация ШИМ*************************************/ while(1){ //if (tempint=255) {LED1_ON;LED2_OFF;LED3_ON;termo_error=1;} else {termo_error=0;}//выводим код ошибки датчика темппературы buttons();//обработик нажатия кнопок if (termo_error == 0){//блокировка по термодатчику if(set == 0) { //нормальный режим работы if (regim == 0){ //режим работы 0 LED1_OFF; LED2_OFF; LED3_OFF; LED4_OFF; SHIBER_PWM = 0; //ШИМ шибер 0-255 VENT_PWM = 0; //ШИМ вентилятор 0-255 } if (regim == 1){ //режим работы 1 LED1_ON; LED2_OFF; LED3_OFF; LED4_OFF; VENT_PWM = R1_VENT; //ШИМ вентилятор 0-255 if (tempint >=40) { //блокировка по температуре SHIBER_PWM = 0; //ШИМ шибер 0-255 }else{ SHIBER_PWM = R1_SHIBER; //ШИМ шибер 0-255 } } if (regim == 2){ //режим работы 2 LED1_OFF; LED2_ON; LED3_OFF; LED4_OFF; VENT_PWM = R2_VENT; //ШИМ вентилятор 0-255 if (tempint >=60) { //блокировка по температуре SHIBER_PWM = 0; //ШИМ шибер 0-255 }else{ SHIBER_PWM = R2_SHIBER; //ШИМ шибер 0-255 } } if (regim == 3){ //режим работы 3 LED1_OFF; LED2_OFF; LED3_ON; LED4_OFF; VENT_PWM = R3_VENT; //ШИМ вентилятор 0-255 if (tempint >=80) { //блокировка по температуре SHIBER_PWM = 0; //ШИМ шибер 0-255 }else{ SHIBER_PWM = R3_SHIBER; //ШИМ шибер 0-255 } } } }else{ SHIBER_PWM=0; VENT_PWM=0; } if(set != 0) settings();//вход в настройки } //return 0; }  
    • Автор: Максим Окатов
       
      Товарищи, помогите пожалуйста. Данная програмулина при нажатии на кнопку входит в функцию MinU() в которой инициализирует таймер для задержки(ждем отпустит пользователь кнопку или нет) если кнопка не отпущена то уменьшаем скважность ШИМ.
      проблема в выделенной красным строчке! когда count больше 3 уменьшаем скважность, но в отладчике AVR studio, Proteus и в железе не робит.
      Перепрыгивает действие в {} так будь-то условие не выполнено...
      #define F_CPU 1000000L
      #include <avr/io.h>
      #include <avr/interrupt.h>
      #include <util/delay.h>
      unsigned char count = 0;
      unsigned char a=5,s=3,b=0;
          //===================================Насройка таймера====================
      void Timer_ini(void){
         TCCR1B = (1<<CS12)|(0<<CS11)|(0<<CS10);
         TCNT1 = 65535-976;
         TIMSK |= (1<<TOIE1);
         count = 0;
        }
          //===========================настройка шим===========================
      void PWM_ini(void){
         ASSR=0x00;
         TCCR2=0b01101110; //На выводе OC1A единица, когда OCR1A==TCNT1, восьмибитный ШИМ
         OCR2=200;
      }
      //===============
      void MinU(){
          unsigned char i=0;
          Timer_ini();
          while (!(PINB&0b00000010)){
              if(count>2){        //Если таймер считал более двух раз
                _delay_ms(100); // ждем 100 мс
                OCR2--; // Уменьшаем скважность
                i=1;        // были в плавном уменьшении
            }
            
         }
         if (i!=1) // если не были в плавном уменьшении
         {
             OCR2=OCR2-50;
             i=0;
         }
      }
              //=======================================================
      int main(void)
          {
             
              // Настраиваем порт D на выход
              DDRB = 0b00001000;
              PWM_ini();
              //Timer_ini();
              sei();
              
              
              while(1)
              {
                  b=a-s;
                  if (!(PINB&0b00000010))
                  {
                      MinU();
                  }/*
                  //if (!(PINB&0b00000100))
                  //{
                      //PlsU();
                  //}*/
              }
              return 0;
          }
          
          ISR (TIMER1_OVF_vect)
          {
              count++;
              TCNT1 = 65535-976;
                  }