日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

        歡迎訪問 生活随笔!

        生活随笔

        當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

        编程问答

        c51单片机c语言程序,C51单片机的C语言程序设计.ppt

        發布時間:2023/12/29 编程问答 25 豆豆
        生活随笔 收集整理的這篇文章主要介紹了 c51单片机c语言程序,C51单片机的C语言程序设计.ppt 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

        《C51單片機的C語言程序設計.ppt》由會員分享,可在線閱讀,更多相關《C51單片機的C語言程序設計.ppt(44頁珍藏版)》請在人人文庫網上搜索。

        1、2020/8/7,1,第10章 80C51的C語言程序設計,單片機C語言概述,10.1,C51的數據類型與運算,10.2,C51流程控制語句,10.3,C51的指針類型,10.4,C51的函數,10.5,C51編程實例,10.6,2020/8/7,2,10.1 單片機C語言概述,10.1.1 C51程序開發過程,編譯器能自動完成變量的存儲單元的分配 對常用功能模塊和算法編制相應的函數,方便移植,采用C51的優點,C語言具有良好的可讀性、可移植性和基本的硬件操作能力。,C51程序開發過程,編寫源程序 建立工程,加入源程序 編譯生產目標程序 仿真調試、寫存儲器,2020/8/7,3,2020/8/。

        2、7,4,10.1.2 C51程序結構,#include #include void delayms(unsigned); void main(void) unsigned char i; P1=0 x01; do for (i=0;i=7;i+) delayms(5000); P1=P11; if(P1=0 x0)P1=0 x01; while(1); ,void delayms(unsigned x) unsigned char j; while(x-) for(j=0;j123;j+); ,2020/8/7,5,10.2.1 C51的數據類型,10.2 C51的數據類型與運算,數據類型決定。

        3、其取值范圍、占用存儲器的大小及可參與哪種運算。,2020/8/7,6,盡可能采用無符號格式 bit用于定義位變量的名字,編譯器會對其分配地址(RAM的20H 2FH 區域) sbit用于定義位變量的名字和地址,地址是確定的且不用編譯器分配(SFR及RAM的20H2FH 區域) C51編譯器在編譯時會自動進行類型轉換,幾點說明:,2020/8/7,7,10.2.2 C51數據的存儲類型,C51的存儲器類型,2020/8/7,8,經常使用的變量應該置于片內RAM中,要用bdata、data、idata來定義。 不經常使用的變量或規模較大的變量應該置于片外RAM中,要用pdata、xdata來定義。。

        4、 默認存儲器類型由編譯控制命令的存儲模式指令限制。,2020/8/7,9,10.2.3 80C51硬件結構的C51定義,特殊功能寄存器的聲明,sfr 特殊功能寄存器名 = 地址常數;,格式:,例如: sfr SCON = 0 x98; sfr P0 = 0 x80;,2020/8/7,10,特殊功能寄存器中特定位的聲明,sbit 位變量名=特殊功能寄存器名位的位置(07) 例如: sfr PSW = 0 xD0; sbit OV = PSW2;,sbit 位變量名 = 字節地址位的位置(07) 例如: sbit OV = 0 xD02; sbit CY = 0 xD07;,sbit 位變量名 。

        5、= 位地址 例如: sbit OV = 0 xD2; sbit CY = 0 xD7;,2020/8/7,11,內部RAM中可位尋址對象的定義,先定義變量的數據類型和存儲類型 例如: int bdata ibase; char bdata array4;,再利用sbit進行聲明 例如: sbit mybit0 = ibase0; sbit mybit15 = ibase15; sbit ary07 = array07; sbit ary37 = array37;,訪問示例: ibase = -1; array2 = a; array2 = 0,2020/8/7,12,算術運算符和算術表達式,1。

        6、0.2.4 C51的運算符和表達式,基本算術運算符 例如: + 加法運算符; - 減法(取負)運算符; * 乘法運算符; / 除法運算符; % 取余數運算符。,示例: 25.0/20.0 = 1.25 25/20 = 1 25%20 = 5,取負運算優先級最高。,2020/8/7,13,自增、自減運算符(僅能用于變量) 例如: + 自增運算符; - 自減運算符;,類型轉換運算符 自動轉換,順序:bitcharintlongfloat 強制類型轉換,如:(double)a,2020/8/7,14,關系運算符和關系表達式,關系運算符 大于; = 大于等于; = = 等于; != 不等于。,關系表達。

        7、式 關系表達式的值為邏輯值:真(1)和假(0),2020/8/7,15,邏輯運算符和邏輯表達式,邏輯運算符 條件表達式;更新表達式)語句,if語句與goto語句結合,當型循環 形式為: loop:if(表達式) 語句 goto loop; ,2020/8/7,23,直到型循環 形式為: loop:語句 if(表達式) goto loop; ,continue是一種循環中斷語句,它并不跳出循環體; break語句只能跳出它所處的那一層循環; goto語句可以用于跳出多重循環(從內層到外層)。,注意:,2020/8/7,24,10.4 C51的指針類型,有一個變量a,利用 void delay(v。

        8、oid) int a = 5000; while(a - - )_nop_( ); ,void int_srv(void)interrupt 0 delay( ); if(INT0 = = 0)P10 = ! P10;while(INT0 = = 0); ,void main() P10 = 0; EA = 1; EX0 = 1; while(1); ,2020/8/7,33,定時計數器編程示例,【例10-2】 利用定時/計數器T0的方式1,產生10ms的定時,并使P1.0引腳上輸出周期為20ms的方波,采用中斷方式,設系統時鐘頻率為12 MHz。,1、計算計數初值X: Nt/ Tcy 101。

        9、0-3/110-610000 計數器初值應為-10000。即應將 -(10000/256)送入TH0中,-(10000%256)送入TL0中。,2、求T0的方式控制字TMOD: M1M0 = 01,GATE = 0,C/T = 0,可取方式控制字為01H。,3、程序清單(見下頁),2020/8/7,34,#include “reg51.h” sbit P10 = P10; void timer0(void)interrupt 1 P10 = ! P10; TH0 = -(10000/256); TL0 = -(10000%256); ,void main(void) TMOD = 0 x01;。

        10、 P10 = 0; TH0 = -(10000 / 256); TL0 = -(10000 % 256); EA = 1; ET0 = 1; TR0 = 1; while(1); ,2020/8/7,35,10.6.2 80C51擴展資源的編程,通用并行口編程示例,【例10-3】用81C55作為微型打印機與單片機間的接口電路。,2020/8/7,36,#include “reg51.h” #include “absacc.h” /*含有對XBYTE等絕對地址訪問宏的定義*/ #define uchar unsigned char #define COMD8155 XBYTE0 x7f00 #d。

        11、efine PA8155 XBYTE0 x7f01 #define PB8155 XBYTE0 x7f02 #define PC8155 XBYTE0 x7f03 sbit BUSY = P33;,2020/8/7,37,uchar code tab17 = 0 xb8,0 xdf,0 xbd,0 xcc,0 x20, 0 xb3,0 xf6,0 xb0,0 xe6,0 xc9,0 xe7,0 x20, 0 x32,0 x30,0 x30,0 x38,0 x0a;/*高教 出版社 2008*/ uchar t1 = 17;,void ptr(uchar d) /*打印字符函數*/ PA8155。

        12、 = d; PC8155 = 0 x00; /*產生選通脈沖*/ PC8155 = 0 x01; while(BUSY); ,2020/8/7,38,void main(void) COMD8155 = 0 x0f;/*送命令字*/ prt(0 x1c); /*送中文打印方式命令字高字節*/ prt(0 x26); /*送中文打印方式命令字低字節*/ EA = 1; EX1 = 1; while(1); ,2020/8/7,39,void int1(void)interrupt 2 using 1 uchar i; EA = 0; for(i = 0;i t1;i +)prt(tabi); E。

        13、A = 1; ,2020/8/7,40,A/D轉換接口編程示例,【例10-4】 ADC0809與單片機的接口電路如圖。,2020/8/7,41,# include “reg51.h” # include “absacc.h” # define uchar unsigned char # define IN0 XBYTE0 x7ff8 sbit ad_busy = P33;,2020/8/7,42,void ad0809(uchar idata *x) uchar i; uchar xdata * ad_adr; ad_adr = & IN0; for(i = 0;i 8;i +) * ad_adr = 0; /*啟動轉換*/ i = i; /*延時等待*/ i = i; while(ad_busy ! = 0); xi = * ad_adr; /*存轉換結果*/ ad_adr +; /*下一通道*/ ,2020/8/7,43,void main(void) static uchar idata ad10 ; ad0809(ad); ,Thank You。

        總結

        以上是生活随笔為你收集整理的c51单片机c语言程序,C51单片机的C语言程序设计.ppt的全部內容,希望文章能夠幫你解決所遇到的問題。

        如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。