日韩欧美国产极速不卡一区,国产手机视频在线观看尤物,国产亚洲欧美日韩蜜芽一区,亚洲精品国产免费,亚洲二区三区无码中文,A大片亚洲AV无码一区二区三区,日韩国语国产无码123

您好,歡迎來到維庫電子市場網(wǎng) 登錄 | 免費注冊

C51語言
閱讀�9040時間�2010-12-02 09:30:21

  單片�C51語言是由C語言繼承而來�。和C語言不同的是,C51語言運行于單片機平臺,而C語言則運行于普通的桌面平臺。C51語言具有C語言結構清晰的優(yōu)點,便于學習,同時具�匯編語言的硬件操作能力。對于具有C語言編程基礎的讀�,能夠輕松地掌握單片機C51語言的程序設計�

主要特點

  單片機C51語言�?zhèn)湔Z言與低級語言的優(yōu)��

  語法結構和標準C語言基本一�,語言簡潔,便于學��

  運行于單片機平臺,支持的微處理器種類繁多,可移植性好。對于兼容的8051系列單片機,只要將一個硬件型號下的程序稍加修�,甚至不加改變,就可移植到另一個不同型號的單片機中運行�

  具有語言的特�,盡量減少底層硬件寄存器的操��

  單片機C51語言提供了完備的�(shù)�(jù)類型、運算符及函�(shù)供使��

  C51語言是一種結構化程序設計語言,可以使用一對花括號“{}”將一系列語句組合成一個復合語�,程序結構清晰明了�

  C51語言代碼�(zhí)行的效率方面十分接近匯編語言,且比匯編語言的程序易于理�,便于代碼共享�

  “Hello world”程�

Hello world 程序

程序設計的基本技�

  C語言是一種程序設計語言,它提供了十分完備的�(guī)范化流程控制結構。因此采用C51語言設計單片機應用系�(tǒng)程序�,首先要盡可能地采用結構化的程序設計方法,這樣可使整個應用系�(tǒng)程序結構清晰,易于調試和維護。對于一個較大的程序,可將整個程序按功能分成若干個模塊,不同的模塊完成不同的功能。對于不同的功能模塊,分別指定相應的入口參數(shù)和出口參�(shù),而經常使用的一些程序編成函�(shù),這樣既不會引起整個程序管理的混亂,還可增強可讀�,移植性也��

  在程序設計過程中,要充分利用C51語言的預處理命令。對于一些常用的常數(shù),如TRUE,F(xiàn)ALSE,PI以及各種特殊功能寄存器,或程序中一些重要的依據(jù)外界條件可變的常�,可采用宏定�"#define"或集中起來放在一個頭文件中進行定義,再采用文件包含命令"#include"將其加入到程序中�。這樣當需要修改某個參量時,只須修改相應的包含文件或宏定義,而不必對使用它們的每個程序文件都作修�,從而有利于文件的維護和更新?,F(xiàn)舉例說明如下�

  �1 對于不同的單片機晶振,程序取不同的延時時�,而且可根�(jù)外界條件的變化修改延時時間的長短。對于這樣的程�,可利用宏定義和條件編譯來實�(xiàn)。程序如下:

  #define     flag 1

  #ifdef     flag==1

  #define  fosc  6M

  delay=10;

  #elif     flag � � �

  #define   fosc    8M

  delay=12;

  #else

  #define    fosc   12M

  delay=20;

  #endif

  main()

  {

  for(I=0;I

  }

  這樣源程序不作任何修改就可適用于不同時鐘頻率的單片機系統(tǒng),并可根�(jù)情況的不同取不同的delay�,完成不同的目的�

與匯編語言程序的混合編�

  C51編譯器能對C語言源程序進行高效率的編譯,生成高效簡潔的代碼,在絕大多數(shù)場合采用C語言編程即可完成預期的目�。但有時為了編程直觀或某些特殊地址的處�,還須采用一定的匯編語言編程。而在另一些場�,出于某種目�,匯編語言也可調用C語言。在這種混合編程�,關鍵是參數(shù)的傳遞和函數(shù)的返回�。它們必須有完整的約定,否則�(shù)�(jù)的交換就可能出錯,� C語言程序與匯編語言程序的調�,其子程序如下:

  PUBLIC AD     ;入口地址

  SEG_AD SEGMENT CODE??;程序段

  RSEG SEG_AD

  USING 0

  AD:   MOV R6,#00

  MOV R7,#00

  SETB P1.1

  ACALL DELAY

  CLR P1.1

  ACALL DELAY

  MOV R0,#10

  RR0: SETB P1.2

  NOP

  CLR P1.2

  DJNZ R0,RR0

  ACALL DELAY

  MOV 30H,R6     ;A/D轉換的高

 ?。粌晌槐4嬖�6�

  ACALL CIR

  MOV R6,30H

  SETB P1.2

  NOP

  CLR P1.2

  MOV 30H,R6

  ACALL CIR

  MOV R6,30H

  MOV R0,#8     ;A/D轉換的低

 ??�8位保存在R7�

  RR2: SETB P1.2

  NOP

  CLR P1.2

  MOV 30H,R7

  ACALL CIR

  MOV R7,30H

  DJNZ R0,RR2

  RET

  CIR: CLR C

  MOV C,P1.0

  MOV A,30H

  RLC A

  MOV 30H,A

  RET

  END

  在以上程序中,函�(shù)的返回值為一無符號整型數(shù),根�(jù)調用�(guī)�,返回值的高位必須在R6�,低位在R7中,這樣才可保證�(shù)�(jù)的傳遞不出錯。另�,在調用過程中,必須注意寄存器的入棧。這樣在以后用到A/D轉換�,在C語言中調用匯編語言子程序AD()即可�

�(shù)�(jù)類型

  在C51語言�,每個變量或者常量在使用前都必須指明�(shù)�(jù)類型�

C51語言數(shù)據(jù)類型

維庫電子�,電子知�,一查百��

已收錄詞�156528