📄 24路编码.c
字号:
#include<reg51.h>
#define uchar unsigned char
#define WAKE_FLAG P3^3
#define _01_IN_ P1
#define _2_IN_ P3
void main()
{
uchar sig_in_first_;
uchar code_24_out=0;
do{
//while(!WAKE_FLAG) //等待主控cpu的唤醒信号
//{
sig_in_first_=_01_IN_; //I/O口读取0~15路信号
if(sig_in_first_=~sig_in_first_) //0~15 路信号中存在有效信号
{
if(sig_in_first_16&0x1d!=0){ //0~7 路信号中存在有效信号
code_24_out=(sig_in_first_16&0x1c)>>2;//输出编码0~7
break ;
}
else{ //8~15 路信号中存在有效信号
code_24_out=8+(sig_in_first_16>>5); //输出编码8~15
break ;
}
}
else if((sig_in_first_=_2_IN_ )!=0xf0) //I/O口读取16~23路信号,若真,则16~23 路信号中存在有效信号
{
sig_in_first_=~sig_in_first_;
code_24_out=16+(sig_in_first_>>4); //输出编码16~23
}
else code_24_out=24; //此时24路信号中无有效信号
//}
}while(1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -