void P4_IO_Init(void) //P47端口用作中断初始化
{
P4IM0 = 0X00; //P4口中断模式为低电平中断
P4IM1 = 0xFF;
P4INTE= 0X80; //使能 P4.7 口中断,7是最高位对应0X80
PINIPH |=(1<<4);//设置P47口中断优先级为3级(最高)
PINIPL|= (1<4); //写入最高优先级
就有问题:
这样你会发现出问题了,定时器0的优先级都给搞低
了,所以无法正常显示2
因为我们现在是靠定时器0 的1ms来完成任务循环的
现在1ms 搞乱了,所以我们这里可以把这个定时器0的中断优先级也给他配置为最高
在config.c里:
void Timer0_Init(void) //1毫秒@24.000MHz
{
TM0PS = 0x00; //设置定时器时钟预分频 ( 注意:并非所有系列都有此寄存器,详情请查看数据手册 )
AUXR &= 0x7F; //定时器时钟12T模式
TMOD &= 0xF0; //设置定时器模式
TL0 = 0x30; //设置定时初始值
TH0 = 0xF8; //设置定时初始值
TF0 = 0; //清除TF0标志
TR0 = 1; //定时器0开始计时
ET0 = 1; //使能定时器0中断
IPH |=(1<<1);//把定时器0优先级设置为最高
IP|=(1<<1);
}
这样就符合我们的要求了:
中断优先级一定要分配好:
看看课后练习:
第十四课到此结束!
今天我们先搁置第十五课的学习,先学第十七集 串口的简单应用
单片机基本主要是4个串口才能通信:
最基本的是一次发送8位2进制数(加上头尾标志就是10位)
自然就有并行通信和串行通信的差别:
每次发送一位数据的称为串行通信,多位一起传输的称为并行通信。
今天要讲的串口通信是串行通信的其中的一种!
同步和异步的概念: