能让汇编转到C51的初学者有更清晰的认识的一篇文章_第1页
能让汇编转到C51的初学者有更清晰的认识的一篇文章_第2页
能让汇编转到C51的初学者有更清晰的认识的一篇文章_第3页
能让汇编转到C51的初学者有更清晰的认识的一篇文章_第4页
能让汇编转到C51的初学者有更清晰的认识的一篇文章_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、本文格式为Word版,下载可任意编辑 能让汇编转到C51的初学者有更清晰的认识的一篇文章 8051 是傳統 CISC 架構微操纵器的代表,而 PIC 則是現代 RISC 架構微操纵器的佳作。 雖然說 RISC 架構是公認未來微操纵器的主流,但是 8051 藉著累積多年的發展環境與資源,特別是 C Compiler 的成熟,在未來仍旧有相當大的想像空間。希望這是一本可以活用的互動式電子書,以討論及共享 KEIL C51 的程式設計經驗為目的。目前的內容有 記憶體8051 特有的記憶體型態特别資料型態指定絕對位址的變數隱藏的初始化程序程式範例軟體模擬的 Single Master I2C 介面程式

2、下載 KEIL C51 試用版8051 特有的記憶體型態code 以 MOVC A+DPTR 讀取的程式記憶體data 可以直接存取的內部資料記憶體idata 以 Mov Rn 存取的內部資料記憶體bdata 可以位元定址(Bit Addressable)的內部記憶體xdata 以 MO DPTR 存取的外部資料記憶體pdata 以 MO Rn 存取的外部資料記憶體特别資料型態bit 一般位元(bit)變數sbit 絕對定址的位元(bit)變數語法sbit my_flag = location; (location 範圍從 0 x00 0 x7F)範例sbit EA = 0 xAF;或是协同

3、bdata 宣告的位元(bit)變數char bdata my_flags;sbit flag0 = my_flags 0;(注意 sbit 前不可以加 static)sfr 特别功能暫存器(Special Function Register)語法sfr my_sfr = location; (location 範圍從 0 x80 0 xFF)範例sfr P0 = 0 x80;指定絕對位址的變數在單一模組內可以使用下面的語法宣告memory_space type variable_name _at_ location範例pdata char my_pdata _at_ 0 x80;假如該變數必

4、須為多個模組所使用(Global Variable)則以抽象指標(Abstract Pointer)的方式在標頭檔(Header File)定義較為便利。#define variable_name *(data_type *) location)範例#define my_pdata *(char pdata *) 0 x80)(注意 char 與 pdata 的順序)ABSACC.H 提供了以下便利的巨集(Macro)定義。#define CBYTE (unsigned char volatile code *) 0)#define DBYTE (unsigned char volatile

5、data *) 0)#define PBYTE (unsigned char volatile pdata *) 0)#define XBYTE (unsigned char volatile xdata *) 0)#define CWORD (unsigned int volatile code *) 0)#define DWORD (unsigned int volatile data *) 0)#define PWORD (unsigned int volatile pdata *) 0)#define XWORD (unsigned int volatile xdata *) 0)隱藏

6、的初始化程序80C51 在電源重置後(Power On Reset)所執行的第一個程式模組並不是使用者的主程式main(),而是一個隱藏在 KEIL-C51 標準程式庫中稱為 startup.a51 的程式模組。startup.a51 的主要工作是把包含 idata、xdata、pdata 在內的記憶體區塊清除為 0,並且 初始化遞迴指標。接著 startup.a51 被執行的仍旧是一個隱藏在 KEIL-C51 標準程式庫 中稱為 init.a51 的程式模組。而 init.a51 的主要工作則是初始化具有非零初始值設定的變數。在完成上述的初始化程序之後,80C51 的操纵權才會交給 main() 開始執行使用者的程式。研究在 C51Lib 目錄下相關模組的組合語言程式碼,使用者將會對 KEIL-C51 的架構有進一步的了解,同時更能把握不同的高階應用技巧。程式範例軟體模擬的 Single Master I2C 介面程式:C51-I2C.C暫存器庫(Register Bank)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论