![]() |
發(fā)布時間: 2021-8-16 14:25
正文摘要:大神幫我看一下,這個簡單的程序為什么功能是錯誤的,編譯沒有問題。#include<reg52.h> sbit SMG_SEG=P0; sbit SMG_GPIO=P2; unsigned char code SEG[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f ... |
名字不是重點 發(fā)表于 2021-8-16 17:40 非常感謝 |
lkc8210 發(fā)表于 2021-8-16 16:55 真的,非常感謝 |
#include<reg52.h> #define SMG_SEG P3 //這里錯了 #define SMG_GPIO P2 //這里也錯了 unsigned char code SEG[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; unsigned char code GPIO[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; unsigned char DisplayData[2]; void DigDisplay() { unsigned char i; unsigned int j; for(i=0;i<2;i++) { SMG_GPIO = GPIO; SMG_SEG = DisplayData; j=50000; //延時要加大才能看到變化 while(j--); SMG_SEG =0x00; } } void Display() //這段代碼其實可以與上面的合并 { DisplayData[0] = SEG[0]; DisplayData[1] = SEG[1]; DigDisplay(); } void main() { while(1) { Display(); } } |
boboj 發(fā)表于 2021-8-16 16:36 我也粗心了,如地板所說的不是sbit 而是 #define XXX P3 #define XXX P2 j=50;太短了 |
lkc8210 發(fā)表于 2021-8-16 15:30 確實粗心了,但是為什么我把那兩行改過后還是有問題 |
glinfei 發(fā)表于 2021-8-16 15:40 Proteus單片機(jī)仿真可以不接電源 |
為啥這么簡單的東西,會出這么多問題啊,比如接線就錯了,Eg. sbit SMG_SEG=P0; 還有你好歹接上電源啊。還有程序的延時太短了 |
就算是程序有問題也與P3無關(guān) |
粗心大意 看看第3行的代碼和你的仿真圖有什么不同 |
Powered by 單片機(jī)教程網(wǎng)