Добрый день, может кто помочь, как будет выглядеть прерывания для atmega 8, и обращение к портам?(вообщем что добавить и удалить, чтоб заработало)
Код: Выделить всё
#include "at89x51.h"
typedef unsigned char byte;
const int myTik= 10000;
unsigned char mCountTik = 0;
unsigned int ch = 48;
#define mTikPer1s = 100;
unsigned char mFlag1s = 0;
#define E P3_4
#define RW P3_3
#define RS P3_2
byte buf;
byte myBufInd[3]={0,0,0};
byte time=0;
byte time1=0;
void IntOverT0 (void) __interrupt TF0_VECTOR
{ // ЇаҐалў ЁҐ Ї® в ©¬Ґаг 0
TR0=0;
TL0=~myTik;
TH0=~(myTik>>8);
TR0=1;
mCountTik++;
if (mCountTik == 100)
{ //…б«Ё Є®«-ў® вЁЄ®ў а ў® Є®«ЁзҐбвўг вЁЄ®ў ў ᥪг¤
mCountTik = 100;
time++;
}
}
void myDelay(int mCodeD)
{
int mI;
for (mI=0;mI<mCodeD;mI++) {}
}
void mDigits()
{
//Установили указатель в самое начало
RS=0;
RW=0;
E=0;
P1=0xC0;
E=1;
myDelay(5000);
//Напишем букву A
E=0;
RS=1;
P1=myBufInd[2];
E=1;
myDelay(5000);
//Поставим указатель на одну позицию правее
E=0;
RS=0;
P1=0xC1;
E=1;
myDelay(5000);
//Напишем букву S
E=0;
RS=1;
P1=myBufInd[1];
E=1;
myDelay(5000);
//Поставим указатель на одну позицию правее
E=0;
RS=0;
P1=0xC2;
E=1;
myDelay(5000);
//Напишем букву S
E=0;
RS=1;
P1=myBufInd[0];
E=1;
myDelay(5000);
E=0;
RS=0;
}
void writeChar(char);
void moveCaret(byte addr)
{
E=0;
RS=0;
P1=addr;
E=1;
myDelay(5000);
}
void mSlovo()
{
//Установили указатель в самое начало
RW=0;
//Напишем букву A
moveCaret(0x80);
writeChar('A');
//Поставим указатель на одну позицию правее
moveCaret(0x81);
//Напишем букву S
writeChar('S');
//Поставим указатель на одну позицию правее
moveCaret(0x82);
//Напишем букву -
writeChar('-');
//Поставим указатель на одну позицию правее
moveCaret(0x83);
//Напишем букву 1
writeChar('1');
//Поставим указатель на одну позицию правее
moveCaret(0x84);
//Напишем букву 1
writeChar('1');
//Поставим указатель на одну позицию правее
//Напишем букву
writeChar(' ');
//Поставим указатель на одну позицию правее
moveCaret(0x86);
//Напишем букву B
writeChar('B');
//Поставим указатель на одну позицию правее
moveCaret(0x87);
//Напишем букву E
writeChar('E');
//Поставим указатель на одну позицию правее
moveCaret(0x88);
//Напишем букву S
writeChar('S');
//Поставим указатель на одну позицию правее
moveCaret(0x89);
myDelay(5000);
//Напишем букву T
writeChar('T');
E=0;
RS=0;
}
void writeChar(char character)
{
E=0;
RS=1;
P1=character;
E=1;
myDelay(5000);
}
void myByteToBufInd(byte mBt)
{
myBufInd[2]=mBt/100;
myBufInd[1]=(mBt%100)/10;
myBufInd[0]=(mBt%100)%10;
myBufInd[0] = myBufInd[0]+0x30;
myBufInd[1] = myBufInd[1]+0x30;
myBufInd[2] = myBufInd[2]+0x30;
}
void mJKIInitializing()
{
// (8bit, 2line, 5x11)
myDelay(50000);
RS=0;
RW=0;
myDelay(1);
E=1;
P1 = 0x3F;
myDelay(1);
E=0;
// НО ДО СЮДА
//
myDelay(50000);
RS=0;
RW=0;
myDelay(1);
E=1;
P1 = 0x3F;
myDelay(1);
E=0;
/////////////////////
//
myDelay(50000);
RS=0;
RW=0;
myDelay(1);
E=1;
P1 = 0xE;
myDelay(1);
E=0;
////////////////////////////////////
//
myDelay(50000);
RS=0;
RW=0;
myDelay(1);
E=1;
P1 = 0x1;
myDelay(1);
E=0;
//////////////////////////
myDelay(50000);
RS=0;
RW=0;
myDelay(1);
E=1;
P1 = 0x7;
myDelay(1);
E=0;
}
void main(void)
{
TMOD=M0_0;
TR0=1;
TL0=~myTik;
TH0=~(myTik>>8);
ET0 = 1;
EA = 1;
mJKIInitializing();
while(1)
{
mSlovo();
myByteToBufInd(time);
mDigits();
}
}
