全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1807
推到 Plurk!
推到 Facebook!

用Keil uVision4軟體+C語言+AT89C2051晶片寫9*9乘法表輸出至印表機

尚未結案
x0981
一般會員


發表:1
回覆:2
積分:0
註冊:2012-07-01

發送簡訊給我
#1 引用回覆 回覆 發表時間:2012-07-01 16:14:58 IP:122.117.xxx.xxx 訂閱
各位大大:我是新手~下列有幾個問題請教一下~
1.Keil uVision4 是否有bug 程式一有迴圈就亂跑(是設定的問題?)
2.debug step(F11)一步一步輸出都正確但就是印出一半或亂碼.
3.build target(F7)產生hex檔就是覺得怪.有朋友建議用其他軟體寫8051程式嗎?
4.附加程式碼煩請各位大大解析~

我已在網路翻很久一直無解~
以下為程式碼

[code cpp]
#include
extern int sprintf (char *, const char *, ...);
sbit BUSY = P3^1;
sbit STB = P3^7;
char *out;
int i,j,k;

void delay(){int i,j;for(i=0;i<120;i )for(j=0;j<1000;j );}

void pt(char a){
BUSY=1;
delay();
while(BUSY==1);
P1=a;
STB=0;
delay();
STB=1;
}

void print_Chinese_character(char a[],int b )
{
int R2;
pt(0x0d);pt(0x1b);pt(0x38);pt(0x00); // 選擇列印中文,0(16*16)1(8*16)
for(R2=0;R2<2*b;R2 )
{
pt(a[R2]);
}
}

void main(void)
{
BUSY = 1;
STB = 1;


for(i=1;i<10;i )
{
for(j=1;j<10;j )
{

k=i*j;
sprintf(out, "%d", k);
pt(i);pt(0x2a);pt(j);pt(0x3d);
print_Chinese_character(out,1);
pt(0x20);
}
pt(0x0d);pt(0x0a);
}

while(1);
}

[/code]

感恩~

編輯記錄
x0981 重新編輯於 2012-07-01 02:17:15, 註解 無‧
DavidLo
高階會員


發表:17
回覆:225
積分:168
註冊:2004-07-21

發送簡訊給我
#2 引用回覆 回覆 發表時間:2012-07-01 22:07:02 IP:122.126.xxx.xxx 訂閱
 
first problem is at line
char *out;


method 1
use out=malloc(8)

method 2
replace char *out with char out[8];


x0981
一般會員


發表:1
回覆:2
積分:0
註冊:2012-07-01

發送簡訊給我
#3 引用回覆 回覆 發表時間:2012-07-01 23:35:21 IP:122.117.xxx.xxx 訂閱

===================引 用 DavidLo 文 章===================

first problem is at line
char *out;


method 1
use out=malloc(8)

method 2
replace char *out with char out[8];

能否請D大詳細說明~debug時反而會出現錯誤?
DavidLo
高階會員


發表:17
回覆:225
積分:168
註冊:2004-07-21

發送簡訊給我
#4 引用回覆 回覆 發表時間:2012-07-02 09:04:21 IP:111.240.xxx.xxx 訂閱
 char *out;

只是宣告一個pointer
並沒有配置字串記憶體


x0981
一般會員


發表:1
回覆:2
積分:0
註冊:2012-07-01

發送簡訊給我
#5 引用回覆 回覆 發表時間:2012-07-02 23:01:18 IP:122.117.xxx.xxx 訂閱

===================引 用 DavidLo 文 章===================
char *out;

只是宣告一個pointer
並沒有配置字串記憶體

多謝大大解答~但c2051好像沒有外加的記憶體
是否還要多掛xxx.h作宣告?

DavidLo
高階會員


發表:17
回覆:225
積分:168
註冊:2004-07-21

發送簡訊給我
#6 引用回覆 回覆 發表時間:2012-07-03 09:18:54 IP:111.240.xxx.xxx 訂閱
觀察 
uVision 4 Build Output
...
Program Size: data=107.1 xdata=1024 code=81520
...
對89C2051這個CPU
code 不能超過 2K
data 不能超過 128( CPU內部RAM)
xdata 視所選的CPU而定(通常是CPU內建的外部記憶體)

系統時間:2017-10-19 9:50:06
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!