из x51 в atmega8

Обсуждаем контроллеры компании Atmel.
Ответить
Родился
Сообщения: 1
Зарегистрирован: Пн мар 31, 2014 22:57:17

Сообщение vanchok »

Добрый день, может кто помочь, как будет выглядеть прерывания для 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();		
	}
}

 

Реклама
Друг Кота
Аватара пользователя
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск

Сообщение pyzhman »

Проще составить алгоритм может и написать заново? А так - переназначить выводы.
Docendo discimus
Контактная информация:
Реклама
Ответить

Вернуться в «AVR»