求单片机大神解释这些语句是啥意思,并且最终实现了什么功能,谢谢各位

参考程序:

#include "reg51.h"
#include "intrins.h"
sfr P0M1 = 0x93;
sfr P0M0 = 0x94;
sfr P1M1 = 0x91;
sfr P1M0 = 0x92;
sfr P2M1 = 0x95;
sfr P2M0 = 0x96;
sfr P3M1 = 0xb1;
sfr P3M0 = 0xb2;
sfr P4M1 = 0xb3;
sfr P4M0 = 0xb4;
sfr P5M1 = 0xC9;
sfr P5M0 = 0xCA;
sfr P6M1 = 0xCB;
sfr P6M0 = 0xCC;
sfr P7M1 = 0xE1;
sfr P7M0 = 0xE2;
bit FLAG; //1:上升沿中断 0:下降沿中断
sbit P10 = P1^0;
void exint0() interrupt 0//INT0中断入口
{
P10 = !P10; //将测试口取反
FLAG = INT0;//保存INT0口的状态, INT0=0(下降沿); INT0=1(上升沿)
}
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
P6M0 = 0x00;
P6M1 = 0x00;
P7M0 = 0x00;
P7M1 = 0x00;
INT0 = 1;
IT0 = 0;//设置INT0的中断类型 (1:仅下降沿 0:上升沿和下降沿)
EX0 = 1; //使能INT0中断
EA = 1;
while (1);
}

#include "reg51.h"
#include "intrins.h"
sfr P0M1 = 0x93;
sfr P0M0 = 0x94;
sfr P1M1 = 0x91;
sfr P1M0 = 0x92;
sfr P2M1 = 0x95;
sfr P2M0 = 0x96;
sfr P3M1 = 0xb1;
sfr P3M0 = 0xb2;
sfr P4M1 = 0xb3;
sfr P4M0 = 0xb4;
sfr P5M1 = 0xC9;
sfr P5M0 = 0xCA;
sfr P6M1 = 0xCB;
sfr P6M0 = 0xCC;
sfr P7M1 = 0xE1;
sfr P7M0 = 0xE2;
上面这些是 寄存器声明,其实头文件里面也就是传统51的寄存器声明 了, 这个程序使用的增强型的51内核单片机,有P0——P7 8个IO口, 所以需要重新声明下reg51里面没有声明的部分。
void exint0() interrupt 0//INT0中断入口
{
P10 = !P10; //将测试口取反
FLAG = INT0;//保存INT0口的状态, INT0=0(下降沿); INT0=1(上升沿)
}
这部分是中断服务函数,外部中断0 进入终端 P1^0取反一次,同时把外部中断0的电平付给FLAG
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
P6M0 = 0x00;
P6M1 = 0x00;
P7M0 = 0x00;
P7M1 = 0x00;
这里是 给单片机的IO口 选择工作方式,一般有高阻输入,准双向IO口,开漏,推挽输出,这几种,增强型的可以给寄存器赋值来 设置工作模式的。 0x00的话一般是 准双向IO口使用的
INT0 = 1; //外部中断0 口 电平拉高,。
IT0 = 0;//设置INT0的中断类型 (1:仅下降沿 0:上升沿和下降沿)
EX0 = 1; //使能INT0中断
EA = 1;
while (1);
}

这个程序就是外部中断0 只要发生电平变化,就会进入中断,
温馨提示:答案为网友推荐,仅供参考
第1个回答  2021-09-24
P0M0,P0M1用于 使用M0,M1设置P0口的IO模式.
有准双向口,推挽输出,高阻输入,开漏输出
//00->准双向 01->推挽PP 10->高阻输入Zin 11->开漏OD
P0M1 = 0x00; //=0000 0000
P0M0 = 0x01; //=0000 0001 // 把P0.0为推挽模式01, 其他为准双向00
能看懂吗?
比如 P0.0 设置为 00->准双向, 那么P0M1= xxxx xxx0, P0M0= xxxx xxx0,
比如 P0.7 设置为 10->高阻输入,那么P0M1= 1xxx xxxx, P0M0= 0xxx xxxx,

其他类同,
最终实现了配置IO模式的功能----------------------------OK
第2个回答  2016-07-12
……这个程序就是将IO管脚配置完,开外部中断0,然后等着每次中断都翻转P1.0管脚……