楼上说的都没有错,C语言的占用资源会比汇编多出20%左右的,而且汇编的加密功能好。
但是这个不代表说用汇编开发单片机比较好。

因为现在的MCU的内部资源已经很多了,基本过剩了,ROM空间不够堆栈溢出这种事情基本不会发生
你做的东西多了,你会对ROM大小有感觉,如果超出来了就换一块、
注意是同系列的换一块比如STC89C51不够大换成STC89C52,ROM大一倍,寄存器不变,价钱差不多。
虽然有些单片机厂家不提供C编译器,但是大部分都是有的,不行就换一块
没有CPU是非他不可的,都是可以替换的,功能差不多,价格差不多都是有替代的。
像楼上说学汇编的话,我可以举个例子
ATMEL公司的两款很著名的MCU——AT89C51和ATmega16.
你千辛万苦学会了51的汇编指令集,但是你依然看不懂16的指令,因为两个不一样。

同公司尚且如此,何况其他公司?
C就不一样了,写了C之后,就算你是电脑上的程序想要改到MCU上,只要想着怎么改端口和添加寄存器就可以了。何况MCU之间的程序?
而且C语言的可读性是汇编没有办法比的,
计算器的制作,我老师说他以前用汇编写计算器的程序,程序用了上千条,最后运行不出来效果,看了三天三夜,终于发现一个很小的错误。我用C写,程序几百条,可读性很强。
我学过汇编和C,以上是我个人的看法,你也可以不理会。当然可以追问
求这C语言程序,电路图如下:要求加的按键按下Lcd1602的上行显示从0开始累加到60,
出现电路短路的时候,电流很大,可以用电流传感器来检测;也可以先将电流转换成电压,再检测电压值来判断是否发生短路。
在程序里设定一个阈值,当检测到的电压值大于该阈值时,延时一下再判断,如果还是大于,就说明有短路,再执行短路保护,没有的话就跳过执行下面的程序。可以用定时检测,也可以用循环检测。

仅是一个思路,希望对你有用,程序还是自己写好,当你在调试中不断的修正错误时就是在进步。
你这问题也说的太不清楚了。
1.上行递增的变量和下行递减的变量时同一个变量么?如果不是,那是不是应该用两个变量b1,b2来存储呢?
2.a==0x05这个判断感觉这么别扭,是要同时按下“确定”和“加”才递增么?你这个是独立按键,而且也没用到中断,直接判断P3.1这个端口是不是低电平不就行了么?都没必要Readkey()。
3.不知道你的LCD显示程序是如何实现的,如果显示程序没问题的话,那你要做的就是判断按键就完事了,也就是如果按的是P3.1就调用显示程序实现上行的数递增,如果按的是P3.2就调用显示程序实现下行的数递减。


