1. 16位单片机 两个int型变量相乘,结果存放在long型变量里,为什么会溢出。
你这个很显然,结果是溢出了,结果把4000000中高于 65536以外的部分舍弃了,只保留了低16位,所以,结果就等效于: 4000000 % 65536 = 2304
至于为什么会这样,我猜测,如果你确定你的C是long类型的,那就应该是编译器的问题,我以前在运算char类型转换到short类型的时候遇到过这种问题。
不过,你可以这么做,保证万无一失:
long c;
c = a;
c = c*b;这样就可以了。
另外,你也可以强制转换:
long c;
c = (long)a*(long)b;
2. C52单片机lcd1602如何显示long数据
用sprintf比较简单点.就是耗内存.
也可以自己编写一个函数,把long 型数据,逐个取位,再变成字符.送入LCD1602显示.
3. STC89C52鍗旷墖链哄唴閮‥EPROM搴旂敤锛岀敤𨱒ユ柇鐢典缭鎶わ纴淇濆瓨涓涓猯ong鍨嫔彉閲忥纴鏀逛简N阆岖▼搴忛兘镞犳硶浣跨敤锛屾眰楂樻坠鎸囩偣
STC89C52鍗旷墖链哄唴閮‥EPROM搴旂敤锛屾柇鐢典缭鎶ょ殑鏂规硶锛
闇瑕 澶栫数璺瑙﹀彂锛屽嵆 鍦ㄦ柇鐢垫椂 缁欎竴涓瑙﹀彂 淇″彿 浜х敓涓涓涓鏂锛
濡 5 V 鍗旷墖链 鍦 4.5 V 镞朵骇鐢 瑙﹀彂涓鏂 灏卞彲浠ャ
涓鏂链嶅姟绋嫔簭 瀹屾垚 鎶婇渶瑕佷缭瀛樼殑鏁版嵁 鍐椤叆 EEPROM 涓銆备笂鐢垫椂璇诲嚭鎭㈠嶃
STC 绯诲垪鍗旷墖链 链変簺鍨嫔彿 鍐呴儴 灏辨湁 浣庣数铡 妫娴嬬数璺锛屽氨鍙浠ョ洿鎺ョ敤浣庣数铡 涓鏂銆
4. keil中long和int的取值范围分别是多少
long型取值是32位,至于int型,取决于你的“Keil”。对于Keil MDK开发包,其针对的是32位单片机,int型是32位的;对于Keil 51开发包,其针对的是8位单片机,int型是16位的。操作方法如下:
1、首先打开STC-ISP软件,点选kiel仿真设置。