📄 main.c
字号:
#include<iom8v.h>
#include<macros.h>
#include"delay.h"
#include"ch452ldriver.h"
/*******************************************************************
*函数名称:初始化串口
*函数功能:初始化USART为波特率9600,8bit数据,收发使能,接收中断允许
*入口参数:无
*出口参数:无
******************************************************************/
int Init_Uart(void)
{
CLI(); //初始化USART时先关全局中断
UCSRB = 0x00;
UCSRA = 0x00;
UCSRC = BIT(URSEL) | 0x06;
UBRRL = 0x33; //设置波特率低位
UBRRH = 0x00; //设置波特率高位
UCSRB = 0x98;
SEI();
return 0x30;
}
/*************************************************
函数名称:void Us0Transmit (unsigned char data)
函数功能:发送数据
入口参数:unsigned char data
出口参数:无
*************************************************/
void Uart_Transmit (unsigned char data)
{
while ( !(UCSRA & (1<<UDRE))); //等待UDR为空
UDR = data;
}
//UART中断接收服务函数,形如 04 xx 02 xx (xx xx)
//其中04为接收的标志,02为接收的长度(可变),括号里的为数据
//接收成功后,置位Us0RCoF,接收到的数据保存在Us0BufRec中,保存的数据是整个数据包
#pragma interrupt_handler UartRxIsr:12
void UartRxIsr(void)
{
//unsigned char temp;
//temp = UDR; //取出数据
asm("nop");
}
void main(void)
{
unsigned char temp,i;
Init_Int0();
Delay_Nus(5);
Init_Uart();
Delay_Nus(5);
Init_Ch452lport();
Delay_Nus(5);
Init_Ch452lsystem();
Delay_Nms(1500);
Display_Ch452lBCD(8,BCDdata);
Delay_Nms(20); //延时
while(1)
{
if(flag==1)
{
temp=Read_Keycode();
Uart_Transmit(0x02);
Uart_Transmit(temp);
flag=0;
}
/*说明:须关了注释的这部分按键才能正确读取,否则读不出按键*/
/*for(i=0;i<8;i++)
{
Delay_Nms(1000);
Ch452l_Writecommand(DATA_LEFT);//数据左移显示
}
Display_Ch452lBCD(8,BCDdata);
for(i=0;i<8;i++)
{
Delay_Nms(1000);
Ch452l_Writecommand(DATA_RIGHT);//数据右移显示
}
Display_Ch452lBCD(8,BCDdata);
for(i=0;i<8;i++)
{
Delay_Nms(1000);
Ch452l_Writecommand(LEFT_CIRCLE);//左循环显示
}
Display_Ch452lBCD(8,BCDdata);
for(i=0;i<8;i++)
{
Delay_Nms(1000);
Ch452l_Writecommand(RIGHT_CIRCLE);//右循环显示
}*/
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -