
就电子产品上用的单片机的内部程序,几乎全部都是加密的,除非厂家允许它的产品随便别人去仿造。因此,就单片机内部的程序是读不出来的。现在网上也有很多人说他能解密出部分单片机内部程序的,但是要付费的。不过,能真正解密的单片机并不多,也都是一些早期的产品。
另一方面,就算是能读出了,读出来的机器码,即是bin格式的,需要反编译才能读和修改,不过,多数人解密就是为了仿造,根本不想改,也改不了。所以,如果想仿造的,需要硬件完全一样的仿造,读出来的程序也是按原样的用。
23的键盘,太简单了,不值得用循环,特别是双重循环。
最简明、高效的程序如下:
sbit P10 = P1^0;
sbit P11 = P1^1;
sbit P12 = P1^2;
sbit P13 = P1^3;
sbit P14 = P1^4;
char scan_key(void)
{
P13 = 0;
if (!P10) return 0;
if (!P11) return 1;
if (!P12) return 2;
P13 = 1;
P14 = 0;
if (!P10) return 3;
if (!P11) return 4;
if (!P12) return 5;
}
本程序,使用的变量最少,也不涉及其它接口。
代码最少,执行效率最高。
你这程序这么写,在调用时肯定会重复读取一个键值的。
改进方法:在没有按键时,读取的键值应该是多少,知道吗,或者能计算出来吗?用xx表示。
主程序要用一个变量,假设叫keyx,保存原键值的,初始值就是那个未按键的值keyx=xx。
好了,在主程序调用时,判断键值,是未按键:keyx=xx,就不处理。继续调用。
如果有按键,按键值=keyx?不等,说明是新按键了,keyx=新键值。
这时会出现重复读取的现象了,但是:按键值=keyx了,就不处理了。
这样有按键,只处理一次。
当松开按键,读取的是按键值xx,keyx=xx了。
再有新按键,按键值=keyx肯定不成立,则又有新按键,依此类推,就可以了。
你是要读出stc89c52单片机里面的程序吗?
这是不可能的,STC单片机只能下载程序,即烧录程序,是不能读回程序的。
有的单片机,破解后是可以读出里面的程序的。但读出的是机器码,即二进制代码程序,需要反汇编成汇编程序。如果你对汇编程序不太懂,就是反汇编出来也没有用啊。
以上就是关于单片机程序可以读出吗全部的内容,包括:单片机程序可以读出吗、单片机键盘扫描程序、C51单片机键值重复读取等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)