Чт июн 14, 2012 20:57:14
#include <intrinsics.h>
#include<ioavr.h>
#include <iotiny2313.h>
#define F_CPU 8000000 //Частота в Гц
#define baudrate 9600 //Скорость
main()
{
unsigned char data='P'; //То, что хочу кинуть
UBRRH=(unsigned char)((F_CPU/(16*baudrate)-1)>>8);//Скорость 9600
UBRRL=(unsigned char)(F_CPU/(16*baudrate)-1);
UCSRA=0;
UCSRB=(1<<TXEN)|(1<<RXEN)|(0<<RXCIE)|(0<<TXCIE)|(0<<UDRIE);//Прерывания офф
UCSRC=(1<<UCSZ0)|(1<<UCSZ1)|(1<<UMSEL);
while(1) //Бесконечный цикл
{
if(UDRE==1)//Если буфер пуст
{
UDR=data; //Кидаем байт
__delay_cycles(F_CPU/2); //Ждем полсекунды
}
}
}
Пт июн 15, 2012 01:17:21
inline void
rs232_init() {
UBRRL = UC_CLOCK /16 /BAUDRATE -1; /* set baudrate *//*изменено*/
/* UCR |= _BV(TXEN) | _BV(RXEN) | _BV(RXCIE); *//* activate sending and receiving */
UCSRB = (1<<RXEN)|(1<<TXEN)|(1<<RXCIE); /*изменено*/
}
Пт июн 15, 2012 08:47:51
#include <intrinsics.h>
#include<ioavr.h>
#include <iotiny2313.h>
#define F_CPU 8000000
#define BAUDRATE 9600
main()
{
unsigned char data='P';
UBRRL = F_CPU /16 /BAUDRATE -1; /* set baudrate *//*изменено*/
/* UCR |= _BV(TXEN) | _BV(RXEN) | _BV(RXCIE); *//* activate sending and receiving */
UCSRB = (1<<RXEN)|(1<<TXEN)|(1<<RXCIE); /*изменено*/
while(1)
{
UDR=data;
__delay_cycles(F_CPU/2);
}
}
#include <intrinsics.h>
#include<ioavr.h>
#include <iotiny2313.h>
#define F_CPU 8000000
#define BAUDRATE 9600
main()
{
unsigned char data='P';
UBRRL = F_CPU /16 /BAUDRATE -1; /* set baudrate *//*изменено*/
/* UCR |= _BV(TXEN) | _BV(RXEN) | _BV(RXCIE); *//* activate sending and receiving */
UCSRB = (1<<RXEN)|(1<<TXEN)|(1<<RXCIE); /*изменено*/
while(1)
{
if(UDRE==1)
{
UDR=data;
__delay_cycles(F_CPU/2);
}
}
}
Вс июн 17, 2012 07:54:10
Пн июн 18, 2012 08:49:16
Вт июн 19, 2012 20:53:36
Вт июн 19, 2012 21:07:44
Ср июн 20, 2012 08:45:21
Ср июн 20, 2012 16:40:25
Чт июн 21, 2012 08:32:26
UART_WRITE: ;передача строки из флеша по RS485
CBR REG0,(1<<SEND_REQUEST) ;сброс флага необходимости передачи
SBI PORTD,TX_EN ;переключение MAX487 на передачу
LDI ZH,High(CMD0*2) ;указатель на начало строки
LDI ZL,Low(CMD0*2) ;во флеше
LDI R17,5 ;длина строки
TX_LOOP:LPM R16,Z+ ;загружаем байт
OUT UDR,R16 ;отправляем в UDR
SBIS UCSRA,UDRE ;ждем пока UDR освободится
RJMP PC-1
DEC R17 ;длина=длина-1
BRNE TX_LOOP ;длина>0 передаем следующий
CLR R16 ;сброс R16
SBRS R16,0 ;ждем пока R16=0
RJMP PC-1 ;а он будет=0 пока не сработает прерывание TXC
CBI PORTD,TX_EN ;MAX487 - на прием
RET ;выход
TXC_VECT: ;прерывание TXC
LDI R16,0xFF ;меняем R16
RETI ;выход
Чт июн 21, 2012 15:43:06