① 運用c語言設計一個電子寵物程序,實現下列基本功能。
#include#include#include#includestructrecord{charname[20];//姓名charphone[12];//電話charadress[50];//地址charpostcode[8];//郵政編碼chare_mail[20];//電子郵件。}student[100];//假設最大數為100.//定義全局變數num,表示已經輸入的人數。intnum;//這里使用數組解決通訊錄的問題,實際上使用鏈表更好。intmenu_select(){chars[80];inta;/*定義整形變數*/system("cls");printf("\t\t***********歡迎進入通訊管理界面********\n\n");printf("\t\t\t0.輸入記錄\n");printf("\t\t\t1.顯示記錄\n");printf("\t\t\t2.按姓名查找\n");printf("\t\t\t3.按電話號碼查找\n");printf("\t\t\t4.插入記錄\n");printf("\t\t\t5.按姓名排序\n");printf("\t\t\t6.刪除記錄\n");printf("\t\t\t7.Quit\n");printf("\t\t***********************************************\n\n");do{printf("Enteryouchoice(0~7):");scanf("%s",s);a=atoi(s);}while(a7);returna;}intadser(){printf("\t\t\t****************請輸入用戶信息****************\n");printf("\t\t\t輸入姓名:\n");scanf("%s",student[num].name);printf("\t\t\t輸入電話號碼:\n");scanf("%s",student[num].phone);printf("\t\t\t輸入地址:\n");scanf("%s",student[num].adress);printf("\t\t\t輸入郵編:\n");scanf("%s",student[num].postcode);printf("\t\t\t輸入e-mail:\n");scanf("%s",student[num].e_mail);num++;printf("\t\t\t是否繼續添加?(Y/N):\n");if(getch()=='y'||getch()=='Y')adser();return(0);}voidlist(){inti;system("cls");if(num!=0){printf("\t\t\t***************以下為通訊錄所有信息************\n");for(i=0;i=0));student[j+1]=tmp;}}printf("\t\t\t排序成功,是否顯示?(y/n)");if(getch()=='y')list();return(0);}intmain(){printf("\t\t************************************************\n");printf("\t\t********welcometoTONGXUNLU*******************\n");printf("\t\t###########codebyXXXXX###################\n");printf("\t\t*************************************************\n");printf("按任意鍵進入主菜單\n");getch();intselectnum;while(1){selectnum=menu_select();switch(selectnum){case0:{adser();break;}case1:{list();break;}case2:{searchbyname();break;}case3:{searchbyphone();break;}case4:{adser();//這里插入,應該能指定位置,不過意義不大,所以和添加記錄一樣了。break;}case5:{sortbyname();break;}case6:{dele();break;}case7:{printf("BYEBYE!\n");system("pause");getchar();exit(0);}}}getchar();return0;}
② c語言實訓貪吃蛇報告書
《高級語言程序設計》課程設計 實驗報告
題目:貪吃蛇
專業:計算機
班級: 軟體
姓名:
成績:
指導教師:
完成日期:2008年09月23日
一、目的
1. 進一步掌握和利用C語言進行程設計的能力;
2、 進一步理解和運用結構化程設計的思想和方法;
3、 初步掌握開發一個小型實用系統的基本方法;
4、 學會調試一個較長程序的基本方法;
5、 學會利用流程圖或N-S圖表示演算法;
6、 掌握書寫程設計開發文檔的能力(書寫課程設計報告);
二、內容與設計思想。
(1).系統功能與分析(填寫你所設計的菜單及流程圖)。
功能:進行貪食蛇游戲
分析:定義鍵盤方向鍵操作,隨機數發生器產生食物,並分別利用函數判斷貪食蛇的長度及游戲是否成功等.
並能夠輸入游戲成績.
(2).數據結構
struct Food
{
int x;/*食物的橫坐標*/
int y;/*食物的縱坐標*/
int yes;/*判斷是否要出現食物的變數*/
}food;/*食物的結構體*/
struct Snake
}
int x[N];
int y[N];
int node;/*蛇的節數*/
int direction;/*蛇移動方向*/
int life;/* 蛇的生命,0活著,1死亡*/
}snake;
(3).模塊設計
根據功能需要:
源文件 :#include <stdio.h>
#include <graphics.h>
#include <stdlib.h>
#include <dos.h>
函數名 功能
void main() 游戲主程序
void Init(void); 圖形驅動
void Close(void); 圖形結束
void DrawK(void); 開始畫面
void GameOver(void); 結束游戲
void GamePlay(void); 玩游戲具體過程
void PrScore(void); 輸出成績
(3)總體設計思想:
利用圖形驅動,製作美觀的游戲界面.
通過隨機函數產生隨機數,控制游戲過程食物的出現.
定義鍵盤操作,控制游戲過程蛇的移動方向.
畫出邊界,並判斷游戲是否結束.
統計游戲過程蛇吃的食物數量,計算並輸出遊戲成績.
(4)調試過程: 測試數據及結果,出現了哪些問題,如何修改的
這里,你就寫一下你平時出錯的地方,與如何修改的.這里我也不好幫你寫.
(5)程序有待改進的地方及本次實習的收獲和建議
收獲:加深認識了程序編譯過程的中團隊合作的重要性.
提高了自己的編程能力
(7)源程序清單(主要代碼)
清單只要將上面的程序全部粘帖就可以了.
③ 21天學通C語言6.0的內容簡介
第一篇為C語言入門篇,該篇介紹了C語言程序的特點及編程的准備。第二篇為C語言基礎篇,該篇介紹了常量與變數、整型、字元型與浮點型和表達式與操作符等內容。第三篇為結構編程篇,該篇通過兩章的篇幅講解了選擇結構和循環結構兩種常用的程序結構。第四篇為數組和字元串篇,該篇通過兩章的篇幅分別講解了C語言中數組和字元串的應用。第五篇為函數篇,該篇主要內容包括函數、函數與文件、函數中的變數和字元串處理函數等。第六篇為指針篇,該篇通過兩章的篇幅介紹了指針的重要概念和應用。第七篇為高級應用篇,該篇內容主要包括堆管理、位運算操作符、結構體、共用體、枚舉和位域,以及預處理等。第八篇為綜合案例篇,該篇以圖書管理系統開發為例,詳細介紹了C語言和文件處理開發的過程。
本書附贈DVD光碟1張,內容包括超大容量手把手視頻、電子教案(PPT)、編程參考寶典電子書、源代碼及各章習題答案。
本書特點
千里之行,始於足下!
——老子
為什麼要寫這樣一本書
C語言作為一門基礎語言,從其誕生以來就受到編程愛好者的廣泛關注並作為應用程序開發中的一把利器。同時,也被認為是最適合編程愛好者步入編程殿堂的一門編程語言。市面上關於學習C語言的書非常豐富,很多書都是大而全,但這類書籍很難做到從初學者的角度來講解和介紹C語言的基本概念和編程技術。所以初學者閱讀後都有種無從下手的感覺。
為了讓初次接觸C語言編程的愛好者能夠快速而輕松地學會C語言編程,筆者總結自己學習C語言的經驗,並結合多年的開發經驗,編寫了這本C語言基礎教程。在本書中,筆者將從基本概念入手,循序漸進地將C語言編程技術展現在讀者面前,讓讀者快速掌握C語言編程的基本概念及編程技術。
本書有何色
1.細致體貼的講解
為了讓讀者更快地上手,本書特別設計了適合初學者的學習方式,用准確的語言總結概念#用直觀的圖示演示過程#用詳細的注釋解釋代碼#用形象的比方幫助記憶。
1)知識點介紹 准確、清晰是其顯著特點,一般放在每一節開始位置,讓零基礎的讀者了解相關概念,順利入門。
2)範例 書中出現的完整實例,以章節順序編號,便於檢索和循序漸進地學習、實踐,放在每節知識點介紹之後。
3)範例代碼 與範例編號對應,層次清楚、語句簡潔、注釋豐富,體現了代碼優美的原則,有利於讀者養成良好的代碼編寫習慣。對於大段程序,均在每行代碼前設定編號便於學習。
4)運行結果 對範例給出運行結果和對應圖示,幫助讀者更直觀地理解範例代碼。
5)代碼解析 將範例代碼中的關鍵代碼行逐一解釋,有助於讀者掌握相關概念和知識。
6)綜合練習 為了便於讀者鞏固所學內容,本書每章中均提供了綜合練習,並給出了操作提示和結果,配合讀者自己動手實踐。
7)習題 每章最後提供專門的測試習題,供讀者檢驗所學知識是否牢固掌握,題目的提示或答案放在光碟中。
8)貼心的提示 為了便於讀者閱讀,全書還穿插著一些技巧、提示等小貼士,體例約定如下:
— 提示:通常是一些貼心的提醒,讓讀者加深印象或提供建議,或者解決問題的方法。
— 注意:提出學習過程中需要特別注意的一些知識點和內容,或者相關信息。
— 警告:對操作不當或理解偏差將會造成的災難性後果做警示,以加深讀者印象。
經作者多年的培訓和授課證明,以上講解方式是最適合初學者學習的方式,讀者按照這種方式,會非常輕松、順利地掌握本書知識。
在本書中,大部分的內容是基於Turbo C 2.0編譯器實現的,但是為了適應最新的C99語言標准,本書部分章節是基於Visual C++編譯器實現的(兩者主要的差別在於內存空間不同)。使用Visual C++編譯器的章節是第3~5章,第8~9以及14~19章。
2.實用超值的DVD光碟
為了幫助讀者比較直觀地學習,本書附贈DVD光碟,內容包括多媒體視頻、電子教案(PPT)、編程參考寶典電子書、各章習題答案和實例源代碼等。
多媒體視頻
贈送1GB,長達21小時手把手教學視頻,講解關鍵知識點界面操作和書中的一些綜合練習題。作者親自配音、演示,手把手教會讀者使用。
電子教案(PPT)
本書可以作為高校相關課程的教材或課外輔導書,所以筆者特別為本書製作了電子教案(PPT),以方便老師教學使用。
編程參考寶典電子書
為方便廣大讀者學習,特別製作了編程開發參考電子書,供讀者查閱和參考。
3.提供完善的技術支持
本書提供了論壇:http://www.rzchina.net,讀者可以在上面提問交流。另外,論壇上還有一些小的教程、視頻動畫和各種技術文章,可幫助讀者提高開發水平。
4.豐富的額外素材下載
相關的開發素材文件,在www.broadview.com.cn提供下載。
推薦的學習計劃
本書作者在長期從事相關培訓或教學實踐過程中,歸納了最適合初學者的學習模式,並參考了多位專家的意見,為讀者總結了合理的學習時間分配方式,
本書適合哪些讀者閱讀
本書非常適合以下人員閱讀:
— 從未接觸過C語言的自學人員;
— 有一定C語言基礎,但還需要進一步學習的人員;
— 其他編程愛好者。
本書作者
2009年1月
④ 如何用 C語言做 圖書管理系統(要求:不能用鏈表做)
網上很多的,無非就是結構體,然後賦值問題,指針,主要用這兩個多
⑤ c語言實驗報告總結怎麼寫
實驗報告總結示例如下:
1、此次設計也讓我明白了思路即出路,有什麼不懂不明白的地方要及時請教或上網查詢,只要認真鑽研,動腦思考,動手實踐,就沒有弄不懂的知識,俗話說的好,讀書破萬卷下筆如有神,沒有學不會只有不肯學!我堅信,只要下一番功夫就能有理想的收獲!
2、通過這次實驗,讓我更加了解到地理信息系統原理與方法的重要性,以及它對我們資源勘查專業發展發揮的重要作用。學習,我覺得結果並不是最重要的,很多結果並不美好。
但是學習這個過程是不可少的。當自己把本課程所有的實驗做完後,才領悟到老師所說話的含義,要掌握一種新的軟體,得隨著實踐的演練,通過循序漸進的學習,才能更好的掌握它。這次實驗,學到的東西很多。
3、我認為,在這學期的gis實驗中,不僅培養了獨立思考、動手操作的能力,在各種其它能力上也都有了提高。更重要的是,在實驗課上,我們學會了很多學習的方法。而這也是日後最實用的,真的是受益匪淺。要面對社會的挑戰,只有不斷的學習、實踐,再學習、再實踐。這對於我們的將來也有很大的幫助。
4、綜上所述,經過這次實習,我了解了很多日後工作所需的基本技能,檢驗了平時所學習的基礎知識,對植物營養這門學科有了更深刻的理解,這於我來說無疑是受益匪淺的。我相信,這次實習讓我獲得的經驗、心得會促進我在以後的學習、工作中尋找到合理的方法和正確的方向。最終感激學校為我們供給這樣的實習機會。
5、這次實驗雖然僅有短短的xx天,可是實習資料異常豐富,並且經過這個實習我們都得到了知識上的復習和本事上的提高。正是因為這個實習,加深了我對植物營養學這門學科的了解,同時對我們專業的發展方向有了初步認識。這次實習不但鞏固了我們平時所學,也為我們日後的專業工作供給了十分實際的便利。
⑥ 學習C語言 必看的書籍
給C++初學者的50個忠告
1.把C++當成一門新的語言學習(和C沒啥關系!真的。);
2.看《Thinking In C++》,不要看《C++變成死相》;
3.看《The C++ Programming Language》和《Inside The C++ Object Model》,不要因為他們很難而我們自己是初學者所以就不看;
4.不要被VC、BCB、BC、MC、TC等詞彙所迷惑——他們都是集成開發環境,而我們要學的是一門語言;
5.不要放過任何一個看上去很簡單的小編程問題——他們往往並不那麼簡單,或者可以引伸出很多知識點;
6.會用Visual C++,並不說明你會C++;
7.學class並不難,template、STL、generic programming也不過如此——難的是長期堅持實踐和不遺餘力的博覽群書;
8.如果不是天才的話,想學編程就不要想玩游戲——你以為你做到了,其實你的C++水平並沒有和你通關的能力一起變高——其實可以時刻記住:學C++是為了編游戲的;
9.看Visual C++的書,是學不了C++語言的;
10.浮躁的人容易說:XX語言不行了,應該學YY;——是你自己不行了吧!?
11.浮躁的人容易問:我到底該學什麼;——別問,學就對了;
12.浮躁的人容易問:XX有錢途嗎;——建議你去搶銀行;
13.浮躁的人容易說:我要中文版!我英文不行!——不行?學呀!
14.浮躁的人容易問:XX和YY哪個好;——告訴你吧,都好——只要你學就行;
15.浮躁的人分兩種:a)只觀望而不學的人;b)只學而不堅持的人;
16.把時髦的技術掛在嘴邊,還不如把過時的技術記在心裡;
17.C++不僅僅是支持面向對象的程序設計語言;
18.學習編程最好的方法之一就是閱讀源代碼;
19.在任何時刻都不要認為自己手中的書已經足夠了;
20.請閱讀《The Standard C++ Bible》(中文版:標准C++寶典),掌握C++標准;
21.看得懂的書,請仔細看;看不懂的書,請硬著頭皮看;
22.別指望看第一遍書就能記住和掌握什麼——請看第二遍、第三遍;
23.請看《Effective C++》和《More Effective C++》以及《Exceptional C++》;
24.不要停留在集成開發環境的搖籃上,要學會控制集成開發環境,還要學會用命令行方式處理程序;
25.和別人一起討論有意義的C++知識點,而不是爭吵XX行不行或者YY與ZZ哪個好;
26.請看《程序設計實踐》,並嚴格的按照其要求去做;
27.不要因為C和C++中有一些語法和關鍵字看上去相同,就認為它們的意義和作用完全一樣;
28.C++絕不是所謂的C的「擴充」——如果C++一開始就起名叫Z語言,你一定不會把C和Z語言聯系得那麼緊密;
29.請不要認為學過XX語言再改學C++會有什麼問題——你只不過又在學一門全新的語言而已;
30.讀完了《Inside The C++ Object Model》以後再來認定自己是不是已經學會了C++;
31.學習編程的秘訣是:編程,編程,再編程;
32.請留意下列書籍:《C++面向對象高效編程(C++ Effective Object-Oriented Software Construction)》《面向對象軟體構造(Object-Oriented Software Construction)》《設計模式(Design Patterns)》《The Art of Computer Programming》;
33.記住:面向對象技術不只是C++專有的;
34.請把書上的程序例子親手輸入到電腦上實踐,即使配套光碟中有源代碼;
35.把在書中看到的有意義的例子擴充;
36.請重視C++中的異常處理技術,並將其切實的運用到自己的程序中;
37.經常回顧自己以前寫過的程序,並嘗試重寫,把自己學到的新知識運用進去;
38.不要漏掉書中任何一個練習題——請全部做完並記錄下解題思路;
39.C++語言和C++的集成開發環境要同時學習和掌握;
40.既然決定了學C++,就請堅持學下去,因為學習程序設計語言的目的是掌握程序設計技術,而程序設計技術是跨語言的;
41.就讓C++語言的各種平台和開發環境去激烈的競爭吧,我們要以學習C++語言本身為主;
42.當你寫C++程序寫到一半卻發現自己用的方法很拙劣時,請不要馬上停手;請盡快將餘下的部分粗略的完成以保證這個設計的完整性,然後分析自己的錯誤並重新設計和編寫(參見43);
43.別心急,設計C++的class確實不容易;自己程序中的class和自己的class設計水平是在不斷的編程實踐中完善和發展的;
44.決不要因為程序「很小」就不遵循某些你不熟練的規則——好習慣是培養出來的,而不是一次記住的;
45.每學到一個C++難點的時候,嘗試著對別人講解這個知識點並讓他理解——你能講清楚才說明你真的理解了;
46.記錄下在和別人交流時發現的自己忽視或不理解的知識點;
47.請不斷的對自己寫的程序提出更高的要求,哪怕你的程序版本號會變成Version 100.XX;
48.保存好你寫過的所有的程序——那是你最好的積累之一;
49.請不要做浮躁的人;
50.請熱愛C++!
建議你買本書,書比網上的電子版教程好的多,如計算機屆超級權威教授 譚浩強 老先生寫的《C語言程序設計(第三版)》,全國發行了700萬冊,可以說是學C語言的人必看的書,我們大學就用這本書,很適合自學,通俗易懂
建議你學習其它計算機知識時也看他的書,他出的書很多,涵蓋面廣,每一本都很經典
這里有他的教程word版下載
另外,機械工業出版社的 計算機叢書系列也相當經典,全是翻譯國外經典教材,國外計算機發展早,水平比國內高很多,看這些教材事半功倍,推薦(美)Al Kelley Ira Pohl的《C語言教程第4版》
學習程序語言要持之以恆,不浮躁,祝你成功!
⑦ 求C語言的教程,入門的,電子書或者視頻都ok~
C語言入門|C語言視頻|C語言電子書免費下載
鏈接: https://pan..com/s/1UazOO71Obo_Kdno3VB6hGw
語言四本經典書籍不知道你看了幾本?C程序設計語言 C和指針 C陷阱與缺陷 C專家編程
這四本看完了,那麼你的C就是差不多很厲害了.C程序設計語言那本可不是國內的,是外國的,就是二樓說的那個,最新好象是第二版,你可以上網查
⑧ c語言實驗報告心得
c語言實驗心得:
1、只有頻繁用到或對運算速度要求很高的變數才放到data區內,如for循環中的計數值。
2、其他不頻繁調用到和對運算速度要求不高的變數都放到xdata區。
3、常量放到code區,如字型檔、修正系數。
4、邏輯標志變數可以定義到bdata中。
在51系列晶元中有16個位元組位定址區bdata,其中可以定義8*16=128個邏輯變數。這樣可以大大降低內存佔用空間。定義方法是: bdata bit LedState;但位類型不能用在數組和結構體中。
5、data區內最好放局部變數。
因為局部變數的空間是可以覆蓋的(某個函數的局部變數空間在退出該函數是就釋放,由別的函數的局部變數覆蓋),可以提高內存利用率。當然靜態局部變數除外,其內存使用方式與全局變數相同;
6、確保程序中沒有未調用的函數。
在Keil C里遇到未調用函數,編譯器就將其認為可能是中斷函數。函數里用的局部變數的空間是不釋放,也就是同全局變數一樣處理。這一點Keil做得很愚蠢,但也沒辦法。
7、如果想節省data空間就必須用large模式。
將未定義內存位置的變數全放到xdata區。當然最好對所有變數都要指定內存類型。
8、使用指針時,要指定指針指向的內存類型。
在C51中未定義指向內存類型的通用指針佔用3個位元組;而指定指向data區的指針只佔1個位元組;指定指向xdata區的指針佔2個位元組。如指針p是指向data區,則應定義為: char data *p;。還可指定指針本身的存放內存類型,如:char data * xdata p;。其含義是指針p指向data區變數,而其本身存放在xdata區。
以前沒搞過C51,大學時代跟單片機老師的時候也是搗鼓下匯編,現在重新搞單片機,因為手頭資料不多,找到一些C51的程序,發現裡面有這些關鍵字,不甚明了,沒辦法只好找了下,發現如下描述:
從數據存儲類型來說,8051系列有片內、片外程序存儲器,片內、片外數據存儲器,片內程序存儲器還分直接定址區和間接定址類型,分別對應code、data、xdata、idata以及根據51系列特點而設定的pdata類型,使用不同的存儲器,將使程序執行效率不同,在編寫C51程序時,最好指定變數的存儲類型,這樣將有利於提高程序執行效率(此問題將在後面專門講述)。與ANSI-C稍有不同,它只分SAMLL、COMPACT、LARGE模式,各種不同的模式對應不同的實際硬體系統,也將有不同的編譯結果。
在51系列中data,idata,xdata,pdata的區別
data:固定指前面0x00-0x7f的128個RAM,可以用acc直接讀寫的,速度最快,生成的代碼也最小。
idata:固定指前面0x00-0xff的256個RAM,其中前128和data的128完全相同,只是因為訪問的方式不同。idata是用類似C中的指針方式訪問的。匯編中的語句為:mox ACC,@Rx.(不重要的補充:c中idata做指針式的訪問效果很好)
xdata:外部擴展RAM,一般指外部0x0000-0xffff空間,用DPTR訪問。
pdata:外部擴展RAM的低256個位元組,地址出現在A0-A7的上時讀寫,用movx ACC,@Rx讀寫。這個比較特殊,而且C51好象有對此BUG,建議少用。但也有他的優點,具體用法屬於中級問題,這里不提。
三、有關單片機ALE引腳的問題
"單片機不訪問外部鎖存器時ALE端有正脈沖信號輸出,此頻率約為時鍾振盪頻率的1/6.每當訪問
外部數據存儲器是,在兩個機器周期中ALE只出現一次,即丟失一個ALE脈沖."這句話是不是有毛
病.我覺得按這種說法,應該丟失3個ALE脈沖才對,我一直想不通是怎麼回事,希望大蝦們幫幫我.
小弟感激涕零.
答:
其他所有指令每6個機器周期發出一個ALE,而MOVX指令佔用12個機器周期只發出一個ALE
四、如何將一個INT型數據轉換成2個CHAR型數據?
經keil優化後,char1=int1/256,char2=int1%256或char1=int1>>8,char2=int1&0x00ff效率是一樣的。
五、在KEIL C51上模擬完了,怎樣生成HEX文件去燒寫??
右鍵點項目中Target 1,選第二個,在OUTPUT中選中CREAT HEX
六、typedef 和 #define 有何不同??
typedef 和 #define 有何不同》》》 如
typedef unsigned char UCHAR ;
#define unsigned char UCHAR ;
typedef命名一個新的數據類型,但實際上這個新的數據類型是已經存在的,只不過是定義了
一個新的名字.
#define只是一個標號的定義.
你舉的例子兩者沒有區別,但是#define還可以這樣用
#define MAX 100
#define FUN(x) 100-(x)
#define LABEL
等等,這些情況下是不能用typedef定義的
七、請問如何設定KELC51的模擬工作頻(時鍾)
用右鍵點擊左邊的的target 1,然後在xtal一欄輸入
八、不同模塊怎樣共享sbit變數,extern不行?
把SBIT定義單獨放到一個.H中,每個模塊都包含這個.h文件
九、C51中對於Px.x的訪問必須自己定義嗎?
是的。
如sbit P17 = 0x97;即可定義對P1.7的訪問
十、SWITCH( )語句中表達式不可以是位變數對嗎?
可以用位變數:
#include
#include
void main()
{
bit flag;
flag=0;
switch(flag)
{
case '0':{printf("0\n");break;}
case '1':{printf("1\n");break;}
default:break;
}
}
bit 變數只有兩種狀態,if 語句足夠啦,!!!
十一、const常數聲明占不佔內存???
const 只是用來定義「常量」,所佔用空間與你的定義有關,如:
const code cstStr[] = {"abc"};
佔用代碼空間;而如:
const char data cstStr[] = {"abc"};
當然佔用內存空間。
另外,#define 之定義似乎不佔用空間。
十二、philips的單片機P89C51RD+的擴展RAM在C51中如何使用?
試一試將auxr.1清0,然後在c語言中直接聲明xdata類型的變數
十三、BUG of Keil C51
程序中用如下語句:
const unsigned char strArr[] = {"數學"};
結果發現strArr[] 內容為 {0xCA,0xD1,0xA7},真奇怪!
凡是有0xfd,則會通通不見了,所以只能手工輸入內碼了,例如 uchar strArr[]=
{0xCA,0xfd,0xd1,0xa7}(用Ultraedit會很方便)。
十四、Keil C51中如何實現代碼優化?
菜單Project下Option for target "Simulator"的C51.
看到Code optimization了嗎?
十五、請教c的!和 ~ 符號有甚區別??
!是邏輯取反,~是按位取反。
十六、c51編程,讀埠,還要不要先輸出1?
我怎麼看到有的要,有的不要,請高手給講講,到底咋回事?謝了
要輸出1的,除非你能保證之前已經是1,而中間沒有輸出過其他值。
十七、當定時器1(T1)用於產生波特率時,P3^5還是否可以用作正常的I/O口呢?
p3.5完全可以當普通的io使用
十八、C51中 INT 轉換為 2個CHAR?
各位高手:
C51中 INT 轉換為 CHAR 如何轉換諸如:
X = LOW(Z);
Y = HIGH(Z);
答:
x=(char)z;
y=(char)(z>>8);
十九、如果我想使2EH的第7位置1的話,用位操作可以嗎?
現在對位操作指令我一些不太明白請各位多多指教:
如 SETB 07H 表示的是20H.7置1,對嗎?(我在一本書上是這么看到的)
那麼如果我想使2EH的第7位置1的話,象我舉的這個例子怎麼表示呢?謝謝!
SETB 77H
setb (2eh-20h)*8+7
20h-2fh每位元組有8個可位操作(00h-7fh),其它RAM不可位直接操作
二十、char *addr=0xc000 和char xdata *addr=0xc000有何區別?
char *addr=0xc000;
char xdata *addr=0xc000;
除了在內存中佔用的位元組不同外,還有別的區別嗎?
char *addr=0xc000; 是通用定義,指針變數 addr 可指向任何內存空間的值;
char xdata *addr=0xc000; 指定該指針變數只能指向 xdata 中的值;
後一種定義中該指針變數(addr)將少佔用一個存儲位元組。
uchar xdata *addr=0xc000;指針指向外ram;
如果:data uchar xdata *addr=0xc000;指針指向外ram但指針本身存在於內ram(data)
中
以此類推可以idata uchar xdata *addr=0xc000;pdata uchar xdata *addr=0xc000;
data uchar idata *addr=0xa0;.........
二十一、while(p1_0)的執行時間?
假設,P1_0為單片機P1口的第一腳,請問,
while(P1_0)
{
P1_0=0;
}
while(!P1_0)
{
P1_0=1;
}
以上代碼,在KEIL C中,需要多長時間,執行完。能具體說明while(P1_0)的執行時間嗎?
模擬運行看看就知道了,
我模擬了試了一下,約14個周期
二十二、怎樣編寫C51的watchdog程序?
各位大蝦,我用KEIL C51 編寫了一個帶外部開門狗的程序,可程序無法運行起來,經過查
找,發現程序在經過C51編譯後,在MAIN()函數的前部增加了一端初始化程序,等到進入
主程序設置開門狗時,開門狗已經時間到,將我的程序復位了,請問我怎樣才能修改這一端
初始花程序,使他一運行,就設置開門狗?
可以在startup.a51中加入看門狗刷新指令,當然用匯編,然後重新編譯startup.a51
,將他和你的程序連接即可。新的startup.a51會自動代替系統默認的啟動模塊。
二十三、keil C51 怎樣把修改的startup.a51 加到工程文件中
直接加入即可
注意不要改動?STACK,?C_START,?C_STARTUP等符號。startup.a51直接加入項目,不用修改也可。可在內面自己修改匯編的一些限制或堆棧指針。
二十四、關於波特率的設置
我在設定串口波特率時發現一個問題:在晶體震盪器為11.0592MHz時,若設9600BPS的話,
TH1=0XFD,TL1=0XFD,而要設19200BPS的話,TH1、TL1有否變化,如果沒變,為什麼?
如果變了,又為什麼?(因為我看書上倆個是一樣的),希望大家點撥。
答:
當電源控制寄存器(PCON)第BIT7(SMOD)為1時波特率加倍。
TH1和TL1的值不變.
二十五、如何在C中聲明保留這部分RAM區不被C使用?
我不知道在C源程序中怎麼控制這個,但在匯編程序中加入下面一段就行:
DSEG AT 20H
AA: DS 10
這樣C51就不會佔用20H--29H了
或者在c51里這樣定義:
uchar data asm_buff[10] _at_ 0x20;
二十六、問浮點運算問題
我在用C51時發現它對傳遞浮點參數的個數有限制,請問:
1)參數是以全局變數的形式傳遞的,請問以全局變數的形式傳遞的參數也有限制嗎?
2)這種傳遞浮點參數的限制有多少呢?
3)float*float的結果是float類型還是double類型?能否直接賦值給float類型的變數?
答:
由於KEIL C51的參數傳遞是通過R0-R7來傳遞的,所以會有限制。
不過KEIL提供了一個編譯參數,可以支持更多參數的傳遞。具體
的內容見KEIL的PDF文檔。
我建議你把多個要傳遞的參數定義到指針或結構體中去,傳遞參
數通過指針或結構進行,這樣好一些。
第3個問題回答是YES,你自己試試不就知道了。
二十七、如何在某一個地址定義ram
用_at_ 命令,這樣可以定位靈活一點的地址
uchar xdata dis_buff[16] _at_ 0x6020 ;//定位RAM
將dis_buff[16]定位在0x6020開始的16個位元組
二十八、keil c中,用什麼函數可以得到奇偶校驗位?
例如32位數據,將四個位元組相互異或後檢查P即可,若耽心P被改變,可用內嵌匯編。
#include
unsigned char parity(unsigned char x){
x^=x;
if(P)return(1);
else return(0);
}
unsigned char parity2(unsigned int x){
#pragma asm
mov a,r7
xrl ar6,a
#pragma endasm
if(P)return(1);
else return(0);
}
⑨ 什麼是C語言程序設計
什麼是C語言?C語言的簡介。
C語言是一種計算機程序設計語言,它既具有高級語言的特點,又具有匯編語言的特點。
它可以作為工作系統設計語言,編寫系統應用程序,也可以作為應用程序設計語言,編寫不依賴計算機硬體的應用程序。
因此,它的應用范圍廣泛,不僅僅是在軟體開發上,而且各類科研都需要用到C語言,具體應用比如單片機以及嵌入式系統開發。
語言特點:C是中級語言/C是結構式語言/C語言功能齊全/C語言適用范圍大/簡潔緊湊、靈活方便/運算符豐富/數據類型豐富/C是結構式語言/語法限制不太嚴格,程序設計自由度大/適用范圍大,可移植性好。