有code程序存储器、数据存储器128字节,xdata外部数据存储器。
问题:1Delay(1)消隐是什么原理?减少段选的余晖,但先位选再段选中间不需要P0=0x00;只在末尾Delay即可消隐;段选之后必消隐,先再子函数开头开端选锁存器,P0=0x00,子函数末尾Delay(2)为最佳消隐方式。
2为什么按键按下数码管不能保持原状态。答:用好定时器扫描按键和数码管。
例如:如果main函数里的while里if条件不满足(空),则会卡在while循环外的最后一条语句一直执行。
如果main函数里的while里if条件的其中一个满足一次,其他条件不满足,则会卡在满足一次的if语句里一直执行。
3共用P0的模块怎么互不干扰?设置一个变量来记录状态。
例:数码管+蜂鸣器,第一个模块用完P0后记得清0(0x00)或清1(0xff)消隐原理 或给P0中的某一位定义一个数组
4DS18B20实验中,用Timer0为什么数据会乱?时序被破坏。
5定时器扫描按键数码管有时会扫描不到。已解决。
6第九届蓝桥杯AT24C02中4设置好后会读不出来4????读的一直是0??(可能是芯片连续写四次速度太快导致存储数据错误,已解决(用for循环))
7如何防止P0口读的太快而导致其他用P0口的设备出错??
写程序时的错误:1define 名称 数值后不加分号。
2数组太大就在名称前加code 例:(code放在这里也可以)unsigned char code Music[]={};code:code是keil C51里面的关键字,一般用于定义常量数组,意思是告诉编译说把这个数组放在ROM存储。
3数组存在ROM中也有大小,如果超出大小,歌曲将不能停止,从头开始无限循环
4unsigned char OneWire_ReceiveBit(void)//5+7+52不行,好像跳过了读取环节,记得上下拉也需要时间//5+5+55可以
5注意对10000怎么取每一位的操作。
6注意有符号整型转换浮点数,以及浮点数转化无符号整数类型,unsigned int(16位),无符号长整数类型(32位).
7定时器扫描按键记得static
8我所写的定时器扫描按键都是一瞬间键数丢失,在主函数