没有反应,有两种可能,一种是那程序根本就没有烧写进去。再检查一下烧录过程。
二是,那程序不对,虽然执行了,但是看不会结果。是开发板吗,是怎么显示程序运行结果的?是数码管显示?还是LED发光二极管显示。否则,你是怎么知道没有反应的?
整流桥整流后滤波、再进行分压、送入ADC0808、再由AT89C51处理调整
,调整时是否要除根号2?
-----------------------------
如果分压做得合适,AT89C51就没有必要进行根号2的计算。
现在大都在用C语言。注意事项:
数据类型:变量尽量用8位单字节unsigned char型的,或者16位双字节unsigned int。一般足够了。如果只是用真假两种状态,(比如标志位)可以用1位的bit型,才用八分之一个字节。不能像电脑编程那样挥霍内存。浮点数等类型,就算了吧。
计算方面:尽量用加减运算,移位运算,与、或、非、运算。
以上运算一个或几个机器周期就能完成。而一个乘除运算,可能需要接近200个时钟周期!(8位)
经验表明,程序不太复杂的情况,乘除法用用也无妨。但尽量用8位的。
是在需要复杂的函数运算的话,(比如说一些温度补偿运算,复杂的函数)可以用查表法,把可能出现的答案都放在code里面,在C语言里是以数组的方式直接查询答案,非常快,缺点是比较占用flash,现在单片机flash都很大,各方面权衡一下。
另外,如果乘以或者除以一个2的平方数的因子,直接可以用移位代替。比如a除以16,等价于a右移4位。
有一些乘除法可以凑数的,靠近2的平方数比较近的数字,根据上一条:
例如:a30相当于a32 - a -a 还相当于 a<<5 - a - a
如此一换算,就把乘法拆分成了加减法和移位。大量节约了资源。
另外,比较高级的单片机AVR,MSP430,PIC,大多数型号都集成了硬件乘法器,做乘法只需要一个机器周期,需要复杂运算的时候可以考虑这些高级单片机。
1、打开Keil μVision编译器,新建一个工程,然后保存在硬盘上的位置,然后选择Atmel-AT89C51单片机为模型,并添加STARTUPA51文件,然后在当前目录下新建一个C文件,并将其添加入工作路径。
2、首先要导入51单片机的头文件,否则后续使用的端口都会出现未定义的情况,然后在主函数中,使得EA=1,即总中断允许,打开中断的总开关。
3、然后分别打开外部中断0和外部中断1的分开关,即EX0=1和EX1=1。
4、编写完主函数后,我们要为两个中断分别编写对应的中断服务函数,才能在中断发生后产生相应的响应,注意外部中断0和外部中断1的中断号分别是0和2。
5、然后到Project菜单中的output项目中勾选Create Hex File,OK后点击编译按钮,如果没有错误,即可生成可以烧录或者仿真的hex文件。
6、最后把生成出的hex烧入进51单片机进行运行或者装载入Proteus仿真系统进行仿真。
以上就是关于STC单片机烧写简单程序没有反应怎么处理全部的内容,包括:STC单片机烧写简单程序没有反应怎么处理、单片机制作交流电压表程序如何进行处理(汇编)、求51单片机进行数据处理时的注意事项,如编程时能进行什么类型的计算,效率有多高等等,100分先奉上等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)