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模擬設置。