📄 bmain.c
字号:
//ICC-AVR application builder : 2008-4-11 10:29:01
// Target : M8
// Crystal: 8.0000Mhz
#include <iom8v.h>
#include <macros.h>
void port_init(void)
{
PORTB = 0xff;
DDRB = 0x00;
PORTC = 0xff; //m103 output only
DDRC = 0x00;
PORTD = 0x00;
DDRD = 0x00;
}
//UART0 initialize
// desired baud rate: 19200
// actual: baud rate:19231 (0.2%)
void uart0_init(void)
{
UCSRB = 0x00; //disable while setting baud rate
UCSRA = 0x00;
UCSRC = BIT(URSEL) | 0x06;
UBRRL = 0x19; //set baud rate lo
UBRRH = 0x00; //set baud rate hi
UCSRB = 0xD8;
}
void USART_Transmit( unsigned char data )/* 等待发送缓冲器为空 */
{
while ( !( UCSRA & (1<<UDRE)) )/* 将数据放入缓冲器,发送数据 */
;
UDR = data;
}
unsigned char USART_Receive( void )
{
/* 等待接收数据*/
while ( !(UCSRA & (1<<RXC)) )
;
/*从缓冲器中获取并返回数据*/
return UDR;
}
#pragma interrupt_handler uart0_rx_isr:iv_USART0_RXC
void uart0_rx_isr(void)
{
//uart has received a character in UDR
}
#pragma interrupt_handler uart0_tx_isr:iv_USART0_TXC
void uart0_tx_isr(void)
{
//character has been transmitted
}
//call this routine to initialize all peripherals
void init_devices(void)
{
//stop errant interrupts until set up
CLI(); //disable all interrupts
port_init();
uart0_init();
MCUCR = 0x00;
GICR = 0x00;
TIMSK = 0x00; //timer interrupt sources
SEI(); //re-enable interrupts
//all peripherals are now initialized
}
void delay(unsigned long m)//延迟
{
int i,j;
for(i=0;i<m;i++)
{}
}
/*******************************************************************************
字符定义:“6” 0x08
*******************************************************************************/
void main(void)
{
unsigned int a,b=100,c=200;
init_devices();
while(1)
{
if(!(PINC&0x01))
{
USART_Transmit(0xaa);
delay(800);
USART_Transmit(a);
USART_Transmit(b);
USART_Transmit(c);
delay(800);
USART_Transmit(0x51);
USART_Transmit(0x59);
USART_Transmit(0x97);
delay(800);
USART_Transmit(0xff);//xor
USART_Transmit(0x55);
delay(65535);
a++;b++;c++;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -