面向51單片機的Keil uVision4的四種基本數據類型

2021-01-11 電子產品世界

在標準C語言中,存在著如下六種基本數據類型:

1、char:字符型;

2、short = short int:短整型

3、int:整型

4、long = long int:長整型

5、float:單精度浮點型

6、double:雙精度浮點型

而面向51單片機的Keil uVision4對此進行了簡化, 因此,可以理解為只存在如下四種基本數據類型:

1、char:字符型

2、int = short = short int:整型

3、long = long int:長整型

4、float = double:單精度浮點型

其中,基本整型數據類型又可以通過signed關鍵詞擴展為有符號的signed char、signed int、signed long類型,或通過unsigned關鍵詞擴展為無符號的unsigned char、unsigned int、unsigned long類型;而對於不加關鍵詞擴展的char、int、long本身,Keil uVision4則一律認為是signed類型。

應對51單片機硬體的一些特點,Keil uVision4還擴展了bit、sbit、sfr、sfr16等四種特殊基本數據類型,它們都是標準C中所沒有的。其中:

1、bit:聲明一個普通的位變量。例如:"bit flag;"。

2、sbit:聲明特殊功能寄存器中的某一位。例如,使用"sbit TI = SCON^0;",就聲明了TI為特殊功能寄存器SCON的第0位。

3、sfr:聲明一個8位寄存器為特殊功能寄存器。例如,將51單片機內存地址0x98處的存儲單元聲明為8位特殊功能寄存器SCON,可以使用"sfr SCON = 0x98;"語句。

4、sfr16:聲明一個16位的寄存器為特殊功能寄存器。為了將51單片機內存地址0xCC處開始的連續兩個存儲單元聲明為一個統一的16位特殊功能寄存器T2,可以使用"sfr16 T2 = 0xCC;"語句。

需要注意的是,在Keil uVision4中,用sbit、sfr、sfr16聲明特殊功能寄存器變量或特殊功能寄存器位變量時,其聲明語句都只能放在函數外,而不能放在函數內,否則出現語法錯誤;而用bit聲明普通位變量時,聲明語句既可放在函數外,也可放在函數內。此外,bit、sbit、sfr、sfr16都不支持指針和數組擴展,因此,不能定義bit、sbit、sfr、sfr16型指針和數組。當然,根據C語言標準,無論是sbit、sfr、sfr16還是bit,變量必須在使用之前(至少在使用之時)聲明:這一點是顯然的。

對於初學者來說,其實沒有必要深究sbit、sfr、sfr16的用法,它們通常用在51單片機的系統自帶頭文件中,一般情況下無需用戶關心。

表1整理了Keil uVision4支持的各種基本數據類型和屬性,希望讀者認真理解和領會。


相關焦點

  • 一篇詳細的KEIL C51 UV2使用教程
    工具/原料電腦,keil軟體方法/步驟打開keil軟體,找到project,下拉菜單有一項new uvision project。點擊這個項目,會出現一個項目路逕自定義項目名稱和保存位置。選擇需要燒代碼的單片機晶片的生產公司以及相應的晶片型號上一步做好以後,出現一個提示,點是就會生成一個51的啟動文件,否就不會出現,如圖,是點了是以上步驟就新建了一個工程。我們可以直接add進去已有的文件。
  • 51單片機之C語言-4.1數據類型
    從這一章起我們開始學習單片機C語言,既然是語言那麼就應該有基本詞彙和相關的語法。我們先來看看數據類型。講數據之前先簡單說說單片機的存儲結構。我們知道單片機要運行之前,我們需要給他寫指令,指令存放在ROM存儲器上。
  • Keil編譯警告:function "assert_param" declared implicitly的...
    工具/原料電腦,keil軟體方法/步驟打開keil軟體,找到project,下拉菜單有一項new uvision project。點擊這個項目,會出現一個項目路逕自定義項目名稱和保存位置。選擇需要燒代碼的單片機晶片的生產公司以及相應的晶片型號上一步做好以後,出現一個提示,點是就會生成一個51的啟動文件,否就不會出現,如圖,是點了是以上步驟就新建了一個工程。我們可以直接add進去已有的文件。
  • 單片機keil 常見問題
    一、混合編程1、模塊內接口:使用如下標誌符:#pragma asm彙編語句#pragma endasm注意:如果在c51程序中使用了彙編語言,注意在keil
  • 51單片機C語言教程(四) 數據類型
    在KEIL uVision2中的關鍵字除了有ANSI C標準的32個關鍵字外還根據51單片機的特點擴展了相關的關鍵字。其實在KEIL uVision2的文本編輯器中編寫C程序,系統可以把保留字以不同顏色顯示,預設顏色為天藍色。(標準和擴展關鍵字請看附錄一中的附表1-1和附表1-2)  先看表4-1,表中列出了KEIL uVision2 C51編譯器所支持的數據類型。
  • 怎樣讓Keil軟體同時兼容51單片機和ARM單片機的問題
    相信學ARM的童鞋大多數都是先學過51的,你如果用Keil這樣的編譯環境的話,也許你會發現之前學校51的Keil開發環境無法兼容ARM,或者你在做項目,同時要用到Keil開發51單片機和ARM單片機,這個時候就開始無奈了,發現裝了keil C或ADK 裡面都只有51或者ARM一種單片機核可供選。難道要我們分別安裝這兩個軟體?
  • 如何讓Keil MDK兼容Keil C51?
    原來用51單片機,使用的是KeilC51uVisionV4.02;最近搞STM32,裝了keilMDKuVisionV4.23。
  • 【單片機筆記】keil c51編譯環境不能跳轉函數的解決辦法
    keil c51 不能使用:Go to Definition of....的解決方法最近使用keil c51 開發usb固件,當向vc一樣使用Go to Definition of....時,出現警告對話框:no browse information available in'工程目錄'check
  • 51單片機玩轉物聯網基礎篇01-開發環境搭建
    前言上至航天,下至兒童玩具,凡事沾一點智能的東西,都離不開單片機的身影......,本文開始,我們學習STC89C52單片機,這款單片機屬於8051系列單片機,51單片機作為入門級單片機不僅在教學實驗中應用廣泛,在實際項目中應用亦是十分廣泛。
  • keil 中文亂碼的一種解決辦法
    我安裝的是keil uvision4 可是,當我打開uvision2是的工程的時候,突然發現中文注釋的那些地方竟然全是亂碼。
  • Keil C51中靜態庫的生成與使用
    單片機Keil C51的使用(C語言) 實驗目的:初步掌握Keil(C51語言)和SUN ES59PA實驗儀的操作和使用,能夠輸入和運行簡單的程序。1.2、在"SysTick"下分別建立"Lib 發表於 2020-10-15 51單片機keil提供的啟動代碼解析(STARTUP.A51) 1.由Keil C生成的啟動代碼程序清單1.1 AT89C51啟動代碼$NOMOD51
  • 51單片機資源擴展:擴展片外RAM
    51單片機資源擴展:從片內ROM跳轉到片外ROM 一文中擴展了單片機的程序存儲器,4KB存儲空間提升到64KB。其實,4K的代碼空間還湊合,但是51自帶的256B數據存儲空間使用起來還真緊張,其中留給用戶的連128B都不到,所以不得不擴展片外RAM。擴展RAM方法和擴展ROM差不多,都是佔用P0/P2口做地址線,同時P0用鎖存器74373分時復用地址和數據信號。
  • 51單片機ROM與RAM
    先說說這個4K字節的程序存儲器或者說只讀存儲器,我們寫的程序經過編譯器編譯成機器碼都是存在這個區域,所以稱為程序存儲器;但單片機上電執行的時候,此區域內的數據只能讀取而不能寫入,他的只讀存儲器的名稱從這而來。
  • KEIL(MDK)同時兼容STM32和51系列單片機的方法
    方法一:本文引用地址:http://www.eepw.com.cn/article/201611/322240.htm 首先安裝KEIL4,然後安裝KEIL3到MDK然後以管理員身份打開KEIL4,用KEIL4的註冊機,註冊ARM和C51。
  • 基於KEIL 51的單片機開發系統設計
    以其性能優越、使用方便,受到眾多單片機愛好者的歡迎。KEIL 51以軟體包的形式向用戶提供包括C51交叉編譯器、A51宏彙編、BL連接定位器等一系列工具和μVision2軟體仿真器dScope51等開發平臺。但是目前支持高版本KEIL 51編程的仿真器價格較高。為此提供了基於KEIL 51開發系統的設計方案。2.硬體電路設計基於KEIL 51開發環境設計開發系統電路原理如圖1所示。
  • 有關Keil軟體仿真的51單片機串口調試技巧
    2 基本調試命令介紹  這個串口調試方法主要是利用了Keil強大的軟體仿真功能。在新版本(高於6.0)的Keil軟體中,增強了軟體的仿真能力,可以利用軟體仿真更多的單片機功能。基本使用方式為:  ASSIGN channeloutreg  其中: channel代表計算機的串口,可以是COM1、COM2、COM3或COM4;而inreg和outreg代表單片機的串口。對於只有一個串口的普通單片機,即SIN和SOUT;對於有兩個或者多個串口的單片機,即SnIN和SnOUT(n=0,1,…即單片機的串口號)。
  • keil5 mdk安裝教程
    1.選中【Keil uvision5 MDK版】壓縮包滑鼠右擊選擇【解壓到Keil uvision5 MDK版】。 2.雙擊打開解壓後的【Keil uvision5 4.點擊【Next>>】
  • Proteus軟體仿真與Keil的51單片機系統設計
    1 概述  隨著半導體技術的飛速發展,以及移動通信、網絡技術、多媒體技術在嵌入式系統設計中的應用,單片機從4位、8位、16位到32位,其發展歷程一直受到廣大電子愛好者的極大關注。
  • STM32入門實戰:強大、好用的嵌入式編譯器軟體Keil uVision5
    Keil軟體可以在KEIL的官網上下載:https://www.keil.com/download/product/ ,如下圖所示: 和Keil4不同的是,Keil5需要單獨安裝晶片包,否則無法選擇晶片類型,比如F1系列的晶片包名稱一般是這樣的:Keil.STM32F1xx_DFP.1.0.5。STM32晶片包Keil的官網下載地址是:http://www.keil.com/dd2/。但Keil官網的速度慢的出奇,我們還是從其它非官方網站下更好些。
  • KEIL4 工程到 KEIL5 程序的移植方法
    由於 KEIL4 和 KEIL5 程序之間的差異, 所以 KEIL5 不能直接打開 KEIL4 的工程。 但是為了確保 KEIL5 向下的兼容性, ARM 公司為我們提供了兩種兼容 KEIL4 程序的方式。首先我們用 keil5 打開 keil4 的工程, 則會彈出下面的窗口, 這就是我們程序兼容的關鍵。