|
楼主 |
发表于 2012-11-4 22:14:10
|
显示全部楼层
完整程序如下,硬件平台是ATmega128,环境是ICCAVR
#include <iom128v.h>
#include <macros.h>
#include <limits.h>
#define uchar unsigned char //定义无符号字符为 uchar
#define uint unsigned int //定义无符号整型
#define ulong unsigned long
uint cord = 53326;;//全局变量
ulong dr = 0xA97FA812;
//****************发送一个字符,查询方式******************************
void usart0_char_send(uchar i)
{
while(!(UCSR0A&(1<<UDRE0)));
UDR0=i;
}
/******************端口初始化*******************************/
void port_init(void)
{
PORTA = (1<<PA7)|(1<<PA6)|(1<<PA5);
DDRA = 0xE0;
PORTB = 0xFF;
DDRB = 0xFF;
PORTC = 0xFF;
DDRC = 0x00;
PORTD = 0xFF;
DDRD = 0x08; //设置RXD1和TXD1
PORTE = 0xFF;
DDRE = 0x02; //设置RXD0和TXD0
//PORTF = 0x00;
// DDRF = 0xE0; //设置ADRO和ADRI
// PORTF = (1<<PF7)|(1<<PF6)|(1<<PF5);
DDRF = 0x00; //设置ADRO和ADRI
PORTF = 0xFF;
PORTG = 0xFF;
DDRG = 0x00;
}
/******************初始器件**************************************/
void init_devices(void)
{
port_init();
usart0_init();
usart1_init();
}
/*****************串口初始化*********************************/
void usart0_init(void)
{
UCSR0B = 0x00; //禁止发送和接收
UCSR0A = 0x02; //倍速异步模式USX0=1
UCSR0C = 0x06; //0000 0110,8位字符,1位停止位,无校验
UBRR0L = 0x1F; //波特率 4800
UBRR0H = 0x01; //参见ATMAGE128使用手册
UCSR0B = (1 << TXEN0) | (1 << RXEN0) | (1 << RXCIE0) | (1 << TXCIE0) ; //允许发送和接收,接收和发送结束中断使能(写成UCSR0B = 0xD8也可以 ;)
}
void usart1_init(void)
{
UCSR1B = 0x00; //禁止发送和接收
UCSR1A = 0x02; //倍速异步模式USX1=1
UCSR1C = 0x06; //0000 0110,8位字符,1位停止位,无校验
UBRR1L = 0x17; //波特率 9600*6
UBRR1H = 0x00; //参见ATMAGE128使用手册
UCSR1B = (1 << TXEN1) | (1 << RXEN1) | (1 << RXCIE1) | (1 << TXCIE1) ;//允许发送和接收,接收和发送结束中断使能(写成UCSR1B = 0xD8也可以 ;)
}
ulong trans()
{
ulong dtr;
dtr = (ulong)compute(cord);//
usart0_char_send(dtr>>24);
usart0_char_send(dtr>>16);
usart0_char_send(dtr>>8);
usart0_char_send(dtr);
}
ulong compute(uint data)//test
{
ulong result;
// uchar r1,r2,r3,r4;
result = (ulong)data*(ulong)(((ulong)data)+1);
// r1 = result;
// r2 = (result>>8);
// r3 = (result>>16);
// r4 = (result>>24);
return(result);
}
void main()
{
init_devices();
trans();
}
我觉得是硬件平台的原因,或是编译器的问题
|
|