|
本帖最后由 玛德陛下 于 2020-12-27 19:30 编辑
中断
先在PROTUES 里面 做好电路图,
发现 复位 ,晶振电路都可以省了。
KEIL里面敲进程序,然后开始捉虫
装载后就可以运行了,
#include <reg51.h>
void delay500(unsigned char k);
void main()
{
//SP =0x60; //堆栈指针调整可以去掉
TMOD=0x01; //设置定时器0模式1
IE= 0x85; //设置中断允许
TCON=0x05; //设置外部中断 模式
while(1)
{
P1=0x21; //根据电路连接计算的
delay500(10); //改时间了,便于观察
P1=0x41;
delay500(2);
P1=0x12;
delay500(10);
P1=0x14;
delay500(2);
}
}
void int_0() interrupt 0 //外部中断0程序
{
unsigned char i1,i2;
i1=P1; //保存中断前的P1状态
for(i2=0;i2<5;i2++)
{
P1=0x21;
delay500(1);
P1=0x00;
delay500(1);
}
P1=i1;
}
void int_1() interrupt 2
{
unsigned char j1,j2;
j1=P1;
for(j2=0;j2<5;j2++)
{
P1=0x12;
delay500(1);
P1=0x00;
delay500(1);
}
P1=j1;
}
void delay500(unsigned char m)
{
unsigned char k1,k2;
TH0=0x3C;
TL0=0xB0;
TR0=1;
for(k1=0;k1<m;k1++)
{
for(k2=0;k2<10;k2++)
{
while(!TF0); //查询定时器中断标志
TF0=0;
TH0=0x3c;
TL0=0xB0;
}
}
}
中断 也是 设置相应的 寄存器来实现,
这程序设计中,中断 不会嵌套,
灯的显示 得人工转换一下,可以通过画图来更直观的 得到 8位二进制数,再转换成16进制数
PROTUES 中51的复位 晶振 ,EA 电路都可以省略
下一步开始 学习 数码管显示 和 键盘输入。
跳过 扩展 RAM ,ROM ,IO 和8255 的例子。
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
打赏
-
查看全部打赏
|