复位电路:
复位电路的两个功能:
- 上电复位(程序在裕兴期间可能会存在执行到一半突然断电的情况,再上电时必须为零从新开始,否则可能会出现错误,因此需要上电复位)
- 手动复位
不运行程序的时候可以测试一下RST,如果处于高电平则是一直处于复位状态,用杜邦线将它接地即可开始运行。
RST(RESET)是复位信号输入端,当单片机运行时,在此引脚上持续两个机器周期的高电平时,就可以完成复位操作。
上电复位:
ECI:一个10μF的电容,当电容里电流每充满时,相当于断路状态,当电流充满,电流流经R2至地与RST(R2电阻限制流经ECI电容的电流大小,使得充电更为缓慢,当电容满时表现出通交隔直(通交流电隔直流电的状态)。因为电容充满电的状态大于两个时钟周期以上,所以RST会完成复位操作。电容充满电流不再流过,RST会通过R2流至地,变为0V,完成复位,开始正常工作。
手动复位:
按下S1按键,VCC经过R1通至RST两个机器周期的高电平,完成复位操作。
中断:
计算机执行某程序时,发生了紧急事件或有特殊请求,CPU暂停某程序的执行,转而去处理上述事件或请求,处理完毕后再重新执行某程序的运行过程叫做中断。
中断分为四个步骤:
- 中断请求–>中断响应–>中断处理–>中断返回
数据的输出/输出传送方式:
- 无条件传送方式:一方对另一方来说总是准备好的。
- 查询传输方式(Look up):传送前一方先查询另一方的状态,若已准备好就传送,否则就继续查询/等待。
- 中断传送方式(IRQ):一方通过申请中断的方式与另一方进行数据传送。
- 直接存储器存取方式(DMA):双方直接通过总线传送数据,不经CPU中转。适用于数量大高速通讯的设备,不占用CPU时间。
中断系统结构:
51子系列允许5个中断源:
外部中断源(2个):
- INTO—-由P3.2端口线引入,低电平或下降沿引起。
- INT1—-由P3.3端口线引入,低电平或下降沿引起。
这两个外部中断源标志和它们的触发方式控制由特殊功能寄存器TCON的低4位控制。
内部中断源(3个):
- T0—-定时器/计数器0中断,由T0回零溢出引起。
- T1—-定时器/计数器1中断,由T1回零溢出引起。
- T1/R1—-串行中断i/O中断,串行端口完成一个帧字符发送/接收后引起。这3个内部中断源的控制分别锁存在特殊功能寄存器TCON和SCON中。
单片机同优先级中段内部查询顺序:
中断源 | 中断级别
外部中断0 中断入口0 最高
T0溢出中断 中断入口1
外部中断0 中断入口2
T1溢出中断 中断入口3
串行口中断 中断入口4 最低
流程:
开总中断;
开外部中断;
中断触发条件(低电平或跳变沿)
中断函数:
void function( ) interrupt 2 //中断处理函数,加关键字interrupt和入口号
{
中断处理语句;
}
中断示例:
//显示函数
void display()
{
*****
}//定时器0初始化
void timer0Init()
{
EA = 1; //开总中断
ET0 = 1; //开定时器0中断
TR0 = 1; //定时器0工作
TMOD = 0x01; //16位
TH0 = 0x4b;
TL0 = 0xfd; //延时时间
}
//主函数
void main()
{
timer0Init();
****
}//中断函数
void timor0() interrupt 1
{
TH0 = 0x4b;
TL0 = 0xfd; //延时时间
display();
}