📄 testuart._c
字号:
//ICC-AVR application builder : 2006-7-17 15:54:53
// Target : M16
// Crystal: 1.0000Mhz
#include <iom16v.h>
#include <macros.h>
//定义MCU与LCD的接口
#define LCD_EN_PORT PORTB
#define LCD_RW_PORT PORTB
#define LCD_RS_PORT PORTB
#define LCD_DATA_PORT PORTA
#define LCD_DATA_DDR DDRA
#define LCD_DATA_PIN PINA
//定义ms7512b与MCU的接口
#define MS7512B_RS_PORT PORTC
#define MS7512B_MOD1_PORT PORTC
//#define MS7512B_MOD2_PORT PORTC
//定义发送判断接口
#define SWITCH_PORT PORTB
//定义LED控制口
#define LED_CONTROL_PORT PORTD
//定义LCD键盘控制口
#define LCD_KEY_PORT PORTD
#define LCD_KEY 0x40 //portd6 in
#define LED_CONTROL 0x80 //portd7 out
#define MS7512B_MOD1 0x01 //portc0 out
//#define MS7512B_MOD2 0x02 //portc1 out
#define MS7512B_RS 0x02 //portc1 out
#define SWITCH_EN 0x10 //portB4 in
#define LCD_EN 0x01 //portB0 out
#define LCD_RW 0x02 //portB1 out/in
#define LCD_RS 0x04 //portB2 out
#define LCD_DATA 0xf0 //portA4/5/6/7 out
short getcrc(unsigned char *s, short len)
{
short acc=0,i,j=0;
while(len--)
{
acc=acc^(*s++<<8);
for(i=0;i++<8;)
if(acc&0x8000)
acc=(acc<<1)^0x1021;
else
acc=acc<<1;
}
return(acc);
}
void makecrc(unsigned char *s,int len)
{
short crcin;
crcin = getcrc(s,len);
s[len]=crcin>>8;
s[len+1]=crcin%256;
}
int checkcrc(unsigned char *s,int len)
{
short crcin;
crcin= getcrc(s,len);
if(((0xffff&crcin)==((0xffff&(s[len]<<8))+(0xff&(s[len+1])))))
return (1);
else return (0);
}
void delay_nus(unsigned int n)//n微秒延时函数
{
unsigned int i;
for (i=0;i<n;i++)
{
asm("nop");
}
}
void delay_hus(unsigned int n)//n毫秒
{
unsigned int i;
unsigned int j;
for (i=0;i<n;i++)
{
for(j=0;j<1000;j++)
asm("nop");
}
}
void USART_Transmit(unsigned char data)
{
while(!(UCSRA&(1<<UDRE)));
//PORTD=0x00;
UDR=data;
}
void port_init(void)
{
PORTA = 0x00;
DDRA = 0x00;
PORTB=0xFF; //与下一句同时起作用
//SFIOR&=~BIT(2); //置SFIOR的PDU上拉电阻有效。与上一句一起生效。
SFIOR&=~BIT(2); //置SFIOR的PDU上拉电阻有效。与上一句一起生效。
DDRB = 0x00;
PORTC = 0x00; //m103 output only
DDRC = 0x00;
//PORTD = 0x80;
// DDRD = 0x80;
PORTD=0xc0; //与下一句同时起作用
//SFIOR&=~BIT(2); //置SFIOR的PDU上拉电阻有效。与上一句一起生效。
SFIOR&=~BIT(2); //置SFIOR的PDU上拉电阻有效。与上一句一起生效
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -