第10届 省赛题错题汇总

1.DAAD运算中数据处理之 “/51.0”

正确代码

Voltage = Ad_Read(0x03)/51;//错误代码

错误代码会出现整数               //????

2.逻辑关系描述错误: ||和&&的用法

题目

正确代码

错误代码

		if((Voltage < 1.5)||(Voltage >= 2.5)||(Voltage < 3.5))	ucLed[2] = 0;      //??
		if((Voltage >= 1.5)||(Voltage < 2.5)||(Voltage >= 3.5)) ucLed[2] = 1;

3.(存疑)关闭数码管和LED指令需要从中断函数处操作

正确代码

错误代码

直接在Led_Proc()函数里通过标志位的方式无法熄灭所有LED,因为??(不知道为啥,存疑)

4.三目运算符用法 “?:”

5.最高位如果为0则数码管这一位熄灭代码逻辑

正确代码:注意,位数高低是从右往左,但是数码管的存储数组是从左往右排序的,可以利用。

	unsigned char i = 3;//高位熄灭专用变量
	
	/* 数据显示区域 */
	Seg_Point[5] = Seg_Disp_Mode;//小数点使能
	if(Seg_Disp_Mode == 0) //处于频率显示界面
	{
		Seg_Buf[0] = 11;//标识符F
		Seg_Buf[3] = Freq / 10000 % 10;
		Seg_Buf[4] = Freq / 1000 % 10;
		Seg_Buf[5] = Freq / 100 % 10;
		Seg_Buf[6] = Freq / 10 % 10;
		Seg_Buf[7] = Freq % 10;
		while(Seg_Buf[i] == 0) //数码管高位熄灭
		{
			Seg_Buf[i] = 10;
			if(++i == 7) break; //保证最低位不熄灭 避免程序卡死
		}
	}

错误代码1:把每一位为0的数码管都熄灭了,而不是只有最高位熄灭

	if(Seg_Disp_Mode == 0)	//频率显示界面
	{
		Seg_Buf[0] = 11;
		Seg_Buf[3] = (Freq / 10000 % 10)?(Freq / 10000 % 10):10;											
		Seg_Buf[4] = (Freq / 1000 % 10)?(Freq / 1000 % 10):10;
		Seg_Buf[5] = (Freq / 100 % 10)?(Freq / 100 % 10):10;
		Seg_Buf[6] = (Freq /10 % 10)?(Freq /10 % 10):10;
		Seg_Buf[7] = (Freq % 10)?(Freq /10 % 10):10;
	}

错误代码2:i会溢出,致使程序卡死,数码管不显示任何数值,按键无法使用。因为程序启动的时候,频率输出功能有一定的滞后性,会致使刚开始输出频率为0,则i会马上++到7,然后溢出,程序在最开始就卡死

	unsigned char i = 3;//高位熄灭专用变量
	
	/* 数据显示区域 */
	Seg_Point[5] = Seg_Disp_Mode;//小数点使能
	if(Seg_Disp_Mode == 0) //处于频率显示界面
	{
		Seg_Buf[0] = 11;//标识符F
		Seg_Buf[3] = Freq / 10000 % 10;
		Seg_Buf[4] = Freq / 1000 % 10;
		Seg_Buf[5] = Freq / 100 % 10;
		Seg_Buf[6] = Freq / 10 % 10;
		Seg_Buf[7] = Freq % 10;
		while(Seg_Buf[i] == 0) //数码管高位熄灭
		{
			Seg_Buf[i] = 10;
			i ++; 
		}
	}

6.(待解决)关于PCF8591的DA输出没搞懂其具体物理含义

  • 9
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值