沈辰栎 2022-06-07 16:54 采纳率: 100%
浏览 103
已结题

请问以下代码每步意思是什么希望详解

#include<reg51.h>
#include<intrins.h>
unsigned char key_num = 0xff;
unsigned char output=0xfe;
unsigned int k=1,ms=0;

void delay(unsigned int a){
unsigned int b;
while(a--)
for(b=0;b<155;b++);
}

void Time0(){
TMOD=0x01;//设置定时器模式
TL0=0x66;//设置定时器初值
TH0=0xfc;//设置定时器初值
TR0=1;//定时器0开始计时
TF0=0;//清除定时器标志
ET0=1;//定时器0中断开关
EA=1;//中断总开关
}

unsigned char read_key() {
unsigned char key_value=0xff,key_temp;
key_temp=P2 & 0xf0;
if(key_temp!=0xf0){
delay(10);
key_temp=P2&0xf0;
if(key_temp!=0xf0){
switch(key_temp)
{
case 0x70:key_value=4;break; //0111 0000
case 0xb0:key_value=3;break; //1011 0000
case 0xd0:key_value=2;break; //1101 0000
case 0xe0:key_value=1;break; //1110 0000
}
return key_value;
}
else return 0xff;
}

}

void main(){
Time0();
while(1) {
key_num=read_key();
}
}

void timer0() interrupt 1
{
TL0=0x66;//设置定时器初值
TH0=0xfc;//设置定时器初值
ms=ms+1;

if(ms>=1000)
{
    ms=0;

    if(key_num==1)
    {P1=0xfe;}
    else if(key_num==2)
    {P1=0x00;}
    else if(key_num==3)
    {
    P1=output;
    output=output<<1;
    output=output|1;
    if(output==0xff)output=0xfe;
    }
    else if(key_num==4)
    {
     if(k==1)

{
P1=output;
output=output<<1;
output=output|1;
if(output==127)
k=0;
}

else if(k==0)
{
P1=output;
output=output>>1;
output=output|128;
if(output==0xfe)
k=1;
}

    } 
}

}

  • 写回答

2条回答 默认 最新

  • Tristan Tsai 2022-06-10 12:39
    关注

    额,你要如何给你详解。。,

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 6月18日
  • 已采纳回答 6月10日
  • 赞助了问题酬金5元 6月7日
  • 创建了问题 6月7日

悬赏问题

  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 有没有帮写代码做实验仿真的
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog
  • ¥15 Excel发现不可读取的内容
  • ¥15 关于#stm32#的问题:CANOpen的PDO同步传输问题
  • ¥20 yolov5自定义Prune报错,如何解决?