freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

[計算機軟件及應用]第5章c51程序設計(編輯修改稿)

2024-11-12 23:20 本頁面
 

【文章內容簡介】 地址單元中, 等價于 ivar1=0x16*/ } 存儲器和并行口的訪問 指針訪問 返回目錄 00:03 37 3. C51定義片內 I/O口 單片機內部并行口可用關鍵字 sfr定義, I/O口定義格式舉例: sfr P0=0x80。 /*定義 P0口,地址 80H*/ sfr P1=0x90。 /*定義 P1口,地址 90H*/ 存儲器和并行口的訪問 sfr定義片內 I/O 返回目錄 00:03 38 例 55 操作片內 I/O口 例 55操作片內并行 I/O口 sfr P1=0x90。 /*定義 P1口,地址 90H*/ sfr P3=0xB0。 /*定義 P3口,地址 B0H*/ sbit DIPswitch=P1^4。/*P1口第 4位( )為 DIP開關的輸入 */ sbit LEDgreen=P3^5。/*P3口第 5位( )為 LED的輸出 */ void main( ) {unsigned char inval=0。 for(。){if(DIPswitch==1)/*檢查 */ {inval=P1amp。0x0F。/*讀 P1口 0~3位 */ LEDgreen =0。 /*置 */ } Else{LEDgreen =1。 /*置 */ } P3=(P3amp。0x0F)|inval。/*P1口 0~3位輸出與 P3口的 0~3位相或輸出*/ } } 存儲器和并行口的訪問 返回目錄 00:03 39 4. C51定義外部并行口 對片外擴展的 I/O口 , 則根據(jù)其硬件譯碼地址 , 將其看作片外數(shù)據(jù)存儲器的一個單元 , 使用define語句進行定義 。 用指針定義 , 指針的定義在 。 存儲器和并行口的訪問 define語句定義片外 I/O 返回目錄 00:03 40 例 56 操作片外 I/O口 例 56 include “” define PA XBYTE[0xffec] /*將 PA定義為外部 I/O口,地址為 0xffec*/ void main( ) { PA=0x5A。 /*將數(shù)據(jù) 5AH寫入地址為 0xffec的存儲單元或 I/O端口 */ } 存儲器和并行口的訪問 返回目錄 00:03 41 位地址訪問 C51對位變量的定義有 3種方法: 1.用 bit關鍵字定義 C51位變量 例如: bit lock; /*將 lock定義為位變量 */ bit dirention; /*將 direction定義為位變量 */ bit display; /*將 display定義為位變量 */ 注意:不能定義位變量指針; 也不能定義位變量數(shù)組。 對位變量的定義 返回目錄 00:03 42 例如: bit fun(bit a1,bit a2) { …… return(a1)。 } 位地址訪問 2.函數(shù)可包含 bit的參數(shù)和返回值 函數(shù)的定義 返回目錄 00:03 43 位尋址存儲區(qū)的位變量定義 3. 定義位尋址存儲區(qū)的位變量 C51編譯器允許數(shù)據(jù)類型為 bdata的變量放入片內 RAM可位尋址區(qū)中 。 例如:先定義變量的數(shù)據(jù)類型和存儲類型 , 然后使用 sbit定義位變量 。 bdata int ibdata。 /* ibdata定義為 bdata整型變量 */ bdata char carry[5]。 /* carry定義為 bdata字符數(shù)組 */ sbit mybit0= ibdata^0。 /* mybit0定義為 ibdata的第 0位 */ sbit mybit15= ibdata^15。 /* mybit15定義為 ibdata的第 15位 */ 位地址訪問 返回目錄 00:03 44 位尋址存儲區(qū)的位變量定義 sbit arrybit07= carry[0]^7。 /* arrybit07定義為 carry[0]的第 7位 */ sbit arrybit37= carry[3]^7。 /* arrybit37定義為 carry[3]的第 7位 */ arrybit37=0。 /*carry[3]的第 7位賦值為 0( 位尋址 ) */ carry[0]=’A’。 /*carry[0]賦值為 ’ A’( 字節(jié)尋址 ) */ 位置 ( ^操作符 ) 后的最大值取決于指定的基本數(shù)據(jù)類型 。 對于 char而言是 0~7;對于 int而言是 0~15;對于 long而言是 0~31。 位地址訪問 返回目錄 00:03 45 3.可位尋址存儲區(qū)的位變量定義 void main( ) { bit s=0。 uchar ss=0x11。 OV=s。 s=ss^3。 } 位地址訪問 返回目錄 00:03 46 C51語言和 MCS51匯編語言混合編程 下面簡單介紹匯編語言與高級語言的混合編程 。 C51高級語言一般用來編寫主程序和運算程序比較方便 , 用匯編語言編寫與硬件有關的子程序更直接而速度快 。 在混合編程中 , 關鍵是傳遞參數(shù)和函數(shù)的返回值 。 它們必須有完整的約定 。 返回目錄 00:03 47 C51程序調用匯編語言程序要注意以下幾點 1) 被調函數(shù)要在主函數(shù)中說明,在匯編程序中,要使用偽指令使 CODE選項有效并聲明為可再定位段類型,并且根據(jù)不同情況對函數(shù)名作轉換,見表 56所示。 C51語言和 MCS51匯編語言混合編程 返回目錄 00:03 48 2) 對為其他模塊使用的符號進行 PUBLIC聲明 , 對外來符號進行 EXTRN聲明 。 3) 參數(shù)的傳遞 。 在混合語言編程中 , 關鍵是入口參數(shù)和出口參數(shù)的傳遞 , C51編譯器可使用寄存器傳遞參數(shù) , 也可以使用固定存儲器或使用堆棧 , 由于 MCS51的堆棧深度有限 , 因此多用寄存器或存儲器傳遞 。 用寄存器傳遞最多只能傳遞三個參數(shù) , 需選擇固定的寄存器 , 見表 57所示 。 C51語言和 MCS51匯編語言混合編程 調用匯編 返回目錄 00:03 49 例如: func1(int a), “ a”是第一個參數(shù) , 在 R R7傳遞 ,func2(int b, int c, int *d), “ b”在 R6, R7中傳遞 , “ c”在 R4,R5中傳遞 , “ d”在 R1, R2, R3中傳遞 。 如果傳遞參數(shù)寄存器不夠用 , 可以使用存儲器傳送 , 通過指針取得參數(shù) 。 匯編語言通過寄存器或存儲器傳遞參數(shù)給 C51程序 。 通過寄存器傳遞返回值給 C51程序 , 返回值使用寄存器見表 58所示 。 C51語言和 MCS51匯編語言混合編程 調用匯編 返回目錄 00:03 50 例 528( p117) 用 4ms的方波信號 , 同時用 8ms的方波信號 。 分別用匯編語言和C語言設計三個模塊程序如下: 模塊一:用 C語言編寫主程序 , 使 8ms的方波; 模塊二:用 C語言編程 , 使 4ms的方波; 模塊三:用匯編語言編寫延時 1ms程序 。 程序的執(zhí)行過程是:模塊一調用模塊二獲得 8ms方波 ,模塊二調模塊三 , 向匯編程序傳遞字符型參數(shù) ( x=2) ,實現(xiàn) 2ms延時 。 C51語言和 MCS51匯編語言混合編程 返回目錄 00:03 51 include define uchar unsigned char sbit P1_1=P1^1。 void delay_4ms(void)。 /*聲明延時 4ms函數(shù) ( 模塊二 ) */ main( ) {uchar i。 for(。 。 ) {P1_1=0。 delay_4ms( )。 /*調模塊二延時 4ms*/ P1_1=1。 /*產生 8ms方波 */ delay_4ms( )。 /*調模塊二延時 4ms*/ } } C51語言和 MCS51匯編語言混合編程 ( 1)模塊一程序設計( 8ms的方波) 返回目錄 00:03 52 ( 2)模塊二程序設計( delay_4ms:使 4ms的方波) include define uchar unsigned char sbit P1_0=P1^0。 delay_1ms(uchar x)。 /*聲明延時 1ms函數(shù)(模塊三) */ void delay_4ms(void) {P1_0=0。 d
點擊復制文檔內容
教學課件相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1