Без описания |
Поиск в теме | Версия для печати |
skyburn |
Отправлено: 15 Июня, 2011 - 21:59:28
|

Маршал

Сообщений всего: 124
Дата рег-ции: Янв. 2011
|
Цитата:через конвертер уровней то хоть ?
Ну контакты на МК
Я шнур использую с конвертером
(Добавление)
Все не как не могу разобраться с этим вот ЮАРТОМ =((((((
(Добавление)
Можете помочь с кодом, очень нужно. Уже кучу всего перепробовал. Ничего не выходит((( а защита диплома через неделю =((((
CODE:#include <tiny2313.h>
#include <delay.h>
#define RXB8 1
#define TXB8 0
#define UPE 2
#define OVR 3
#define FE 4
#define UDRE 5
#define RXC 7
#define FRAMING_ERROR (1<<FE)
#define PARITY_ERROR (1<<UPE)
#define DATA_OVERRUN (1<<OVR)
#define DATA_REGISTER_EMPTY (1<<UDRE)
#define RX_COMPLETE (1<<RXC)
int a=0,b=0;
char d;
unsigned char buf,buf2;
unsigned char mas[2][16];
unsigned char min[2][16]={
{0b01111111,0b10111111,0b11011111,0b11101111,
0b11110111,0b11111011,0b11111101,0b11111110,
0b11111111,0b11111111,0b11111111,0b11111111,
0b11111111,0b11111111,0b11111111,0b11111111},
{0b11111111,0b11111111,0b11111111,0b11111111,
0b11111111,0b11111111,0b11111111,0b11111111,
0b01111111,0b10111111,0b11011111,0b11101111,
0b11110111,0b11111011,0b11111101,0b11111110}};
// Глобальная переменная - полученные даные от устройства
// Эсли FromGCnDevice==0 - ничего не получено
char FromGCnDevice;
// Обработка прерывания окончания приема байта
interrupt [USART_RXC] void usart_rx_isr(void)
{
char status;
// Получаем байт статуса и данных
status=UCSRA;
FromGCnDevice=UDR;
if (a<16)
{mas[0][a]=FromGCnDevice;
a++;}
else
if ((a>16)&&(a<32)) {
mas[1][b]=FromGCnDevice;
a++;
b++;}
else {a=0;b=0;}
// Если произошла ошибка при приеме байта то FromGCnDevice=0
if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))!=0)FromGCnDevice=0;
}
void draw(){
for (a=0;a<16;a++)
{
buf=min[0][a];
buf2=min[1][a];
for (b=0;b<8;b++)
{PORTB=buf;
PORTD.4=0;
PORTD.4=1;
buf=buf>>1;
}
for(b=0;b<8;b++)
{PORTB=buf2;
PORTD.4=0;
PORTD.4=1;
buf2=buf2>>1;
}
buf=mas[0][a];
buf2=mas[1][a];
for (b=0;b<8;b++)
{PORTB=buf;
PORTD.4=0;
PORTD.4=1;
buf=buf>>1;
}
for(b=0;b<8;b++)
{PORTB=buf2;
PORTD.4=0;
PORTD.4=1;
buf2=buf2>>1;
}
PORTD.5=1;
PORTD.5=0;
}
}
// Процедура передачи байта
void ToGCnDevice (char c)
{
// Ждем окончания передачи предідущего байта
while ((UCSRA & DATA_REGISTER_EMPTY)==0);
// Передаем байт
UDR=c;
}
// Standard Input/Output functions
// Declare your global variables here
void main(void)
{
// Declare your local variables here
// USART initialization
// Communication Parameters: 8 Data, 1 Stop, Even Parity
// USART Receiver: On
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud Rate: 9600
UCSRA=0x00;
UCSRB=0x98;
UCSRC=0x26;
UBRRH=0x00;
UBRRL=0x33;
// Global enable interrupts
#asm("sei")
while (1)
{
draw();
};
}
Вот код. Думаю ошибок здесь много. Я бы изучил UART подробней, но к сожалению сейчас мало времени осталось до сдачи =((((((
Пожалуйста помогите.
Нужно принять и записать в масссив mas 32 байта, и при помощи draw вывести(draw работает) |
|
|
|
Поиск в теме | Версия для печати |
Страниц (5): « 1 2 3 [4] 5 » |
« Программирование микроконтроллеров » |
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
|
  |
|
|
|