Сб июл 23, 2011 03:59:04
Сб июл 23, 2011 08:35:57
Сб июл 23, 2011 09:09:11
Вс июл 24, 2011 10:41:16
Пн июл 25, 2011 10:58:46
Не вводите людей в заблуждение. Прежде чем такие вещи писать, почитайте ДШ повнимательнее.Ser60 писал(а):не хватает строчки ANSEL = 0;
Пн июл 25, 2011 12:32:20
Аlex писал(а):Не вводите людей в заблуждение. Прежде чем такие вещи писать, почитайте ДШ повнимательнее.Ser60 писал(а):не хватает строчки ANSEL = 0;
clrf ANSEL ; Настройка вывода как цифровой канал порта ввода/вывода
LIST p=16F876A ; PIC16F876A.
LIST p=12F629 ; PIC12F629.
Пн июл 25, 2011 15:43:44
Аlex писал(а):Не вводите людей в заблуждение. Прежде чем такие вещи писать, почитайте ДШ повнимательнее.Ser60 писал(а):не хватает строчки ANSEL = 0;
Вт авг 16, 2011 21:20:26
Пт сен 23, 2011 23:18:38
Пт сен 23, 2011 23:48:57
Сб сен 24, 2011 09:56:20
Вс сен 25, 2011 17:42:04
#include <pic.h> // Include header file for MCU
#define _XTAL_FREQ 20000000 // Define Frequency 20.0 MHz for function __delay_ms
__CONFIG(HS & WDTDIS & LVPDIS); // Config. High speed clock,Disable watchdog and Disable LVP
void Delay_ms(unsigned int tick)
{
while(tick--) // Loop couter delay time
{
__delay_ms(1); // Delay 1 ms
}
}
void usart_init()
{`
// Set buadrate 9600 bps
SYNC = 0;
BRGH = 0;
BRG16 = 1;
SPBRG = 0x08;
SPBRGH = 0x02;
TXEN = 1; // Enable transmition
CREN = 1; // Enable reciption
SPEN = 1; // Enable USART transmition/reciption
}
void usart_putc(unsigned char c)
{
while(!TRMT); // Wait transmition ready
TXREG = c; // Send byte
}
void usart_puts(unsigned char *s)
{
while(*s) // Loop for send string
{
usart_putc(*s++); // Send byte from string
}
}
unsigned char usart_getc()
{
while(!RCIF); // Wait data reciption
return(RCREG); // Return data
}
void main()
{
unsigned char key; // Keep data reciption from keyboard
usart_init(); // Initial USART baudrate 9600 bps
usart_puts("Press keyboard for test Echo!\r\n"); // Display first message
while(1) // Infinite loop
{
key = usart_getc(); // Wait until data reciption
// Echo message
usart_puts("You press key:");
usart_putc(key);
usart_puts("\r\n");
}
}
Вс сен 25, 2011 18:06:03
#include <pic.h> // Include header file for MCU
#define _XTAL_FREQ 20000000 // Define Frequency 20.0 MHz for function __delay_ms
__CONFIG(HS & WDTDIS & LVPDIS); // Config. High speed clock,Disable watchdog and Disable LVP
#define serial_error() OERR
#define nostop() FERR
#define serial_fix() {CREN = 0; CREN = 1;}
#define vbod 9600
#define SPBRG_ ((_XTAL_FREQ /vbod) -16)/16
//
void usart_init(void);
void usart_putc(unsigned char c);
void usart_puts(unsigned char *s);
//
volatile unsigned char RC_REG;
static bit read_;
//
interrupt void intr(void)
{
if (RCIF && RCIE)
{
if(serial_error()) serial_fix(); // переполнение буфера
if (nostop()) {RCREG;} // пропуск стопового
else
{
RC_REG =RC;
read_=1;
}
}
//----------
void usart_init()
{
PIR1 = 0;
PEIE = 1; /* разрешаем прерывания периферии */
SPEN=1;//разрешение работы последовательного порта
SYNC =0;//включение асинхронного режима работы
TX9=0; // выбираем 8 - битовую передачу
RX9=0; // выбираем 8 - битовый прием
BRGH =1;//включаем высокоскоростной режим
SPBRG=SPBRG_;// устанавливаем скорость обмена
TXEN=1;// не люблю я ножек в 3 состоянии....
TXIE=0;//запрещаем прерывания от передатчика
CREN =1;
// разрешаем прерывания от приемника
RCIE=1;
GIE = 1;// разрешаем прерывания
}
//----------
void usart_putc(unsigned char c)
{
while(!TRMT); // Wait transmition ready
TXREG = c; // Send byte
}
//----------
void usart_puts(unsigned char *s)
{
while(*s) // Loop for send string
{
usart_putc(*s++); // Send byte from string
}
}
//----------
void main()
{
usart_init(); // Initial USART baudrate 9600 bps
usart_puts("Press keyboard for test Echo!\r\n"); // Display first message
while(1) // Infinite loop
{
if(read_)
{
read_=0;
usart_putc(RC_REG);
}
}
}
//----------
Вс сен 25, 2011 18:25:58
Вс сен 25, 2011 18:41:42
Вс сен 25, 2011 18:59:08
Вс сен 25, 2011 19:06:42
Вс сен 25, 2011 19:10:57
Вс сен 25, 2011 19:13:04
Вс сен 25, 2011 19:14:08