中易网

请帮忙注释一下下面的c程序(单片机)谢谢

答案:1  悬赏:30  
解决时间 2021-01-18 05:00
  • 提问者网友:孤凫
  • 2021-01-17 09:19
请帮忙注释一下下面的c程序(单片机)谢谢
最佳答案
  • 二级知识专家网友:忘川信使
  • 2021-01-17 10:16
①扩展82C55
#include
#define ucha unsigned char
ucha xdata *con=0xff7f;
ucha xdata *pa=0xff7c;
ucha xdata *pb=0xff7d;

void main()
{
ucha i;
*con = 0x82; //OXFF7F地址处写入0x82数值
while(1)
{
i = *pb; //*pb指针值OXFF7D 赋给i
*pa = i; //oxff7c地址处写入I值
}
}

②矩阵式键盘扫描
#include
#define uchar unsigned char
#define uint unsigned int
#define Matrix P1 //宏定义 Matrix 为P1 这里P1应该是键盘扫描的8根线
#define LED P2 //宏定义 LED 为P2 应该是数码显示输出口

uchar num;
char value;
uchar code table[16]=
{
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71
};
void Delay_ms(uint x) //延时函数
{
uchar i;
for(;x>0;x--)
for(i=110;i>0;i--);
}
void Matrix_IN() //键盘扫描子程序
{
char a=0;
Matrix=0x0f; //P1低4位置高电平
if(Matrix!=0x0f) //如果有键按下,会拉低P1低四位中的一位
{
Delay_ms(12); //延时消抖
if(Matrix!=0x0f) //经过延时后还有键按下,则开始取值
{
Matrix=0x0F;
switch(Matrix) 检测第几行(列)有键按下
{
case 0x07: value=0; break; //检测按下的按键,如果第一行(列)被按下,
//则P1第0位为低电平
case 0x0b: value=1; break; //按下第二行(列),后面依此类推
case 0x0d: value=2; break;
case 0x0e: value=3; break;
}
Matrix=0xF0;
switch(Matrix) //检测第几列(行)有键按下 P1高4位
{
case 0x70: value=value;break;
case 0xb0: value+=4; break;
case 0xd0: value+=8; break;
case 0xe0: value+=12; break;
}
while((a<50)&&(Matrix!=0xf0)) //延时50次
{
Delay_ms(12);
a++;
}
}
}
LED=~table[value]; //把按键值转为数码管显示值输出到P2 数码管显示按键
}
void main(void) //主函数
{
while(1) //死循环检测按键
Matrix_IN();
}

由于没有你的图纸,只能估计你的线图接法,或有错误的地方,仅供参考追问只要有正确的注释就可以 ,我就应付应付作业 ,帮我在注释一下,你查我的提问看看 ,还有几个,谢谢了追答只看到你还有一个1602的程序,这个没看时序注释不来,你看一下1602时序吧,并不是很难
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息