c语言中void delay0.5(),第5章补充 单片机C语言基础.ppt
第5章補充 單片機C語言基礎.ppt
2.中斷函數舉例 例4-16 本例程序電路圖可參考圖4-1。下面的程序的功能是:對外部中斷1中斷次數計數,并送P0口顯示。 #include unsigned char ex1_counter = 0; void ex1_isr (void) interrupt 2 { P0=ex1_counter++; //加一送P0顯示 } void main (void) { IT1 = 1; // INT0 下降沿觸發 EX1 = 1; // 使能INT0 EA = 1; // 開總中斷 while (1) ; //死循環 } 3.未用到的中斷的處理 為了提高代碼的容錯能力和系統的可靠性,對于不使用的中斷,編寫一個空的中斷函數,使之在中斷入口處生成RETI指令并能通過該指令返回主程序。例如外中斷0若不用,可以編寫如下空中斷函數。 int0_int() interrupt 0{} //外中斷0 timer0_int() interrupt 1{}//定時器0中斷 Int1_int() interrupt 2 {} //外中斷1 timer1_int()interrupt 3 {} //定時器1中斷 serial_int()interrupt 4{}//串行口中斷 4.6預處理命令、庫函數4.6.1 預處理命令 預處理命令是在編譯前預處理的命令,編譯器不能直接對它們處理,是在編譯前預先處理的命令。 1)不帶參數的宏定義 用指定的標識符來代表一個字符序列。 一般的定義形式為: #define 標識符 字符序列 宏定義后,程序中可以使用宏名,并將形參換成實參。 2)帶參數的宏定義 預處理時不但進行字符替換,而且替換字符序列中的形參。一般定義形式如下: #define 標識符(形參) 字符列表 #define S(a,b) a*b area=S(3,2) 2.類型定義typedef 使用基本類型定義后聲明變量時,用數據類型關鍵字指明變量的數據類型,而用結構、聯合等定義變量時,先定義結構、聯合的類型,再使用關鍵字和類型名定義變量。如果用typedef定義新的類型名后,只要用類型名就可定義新的變量。例如: typedef struct {int num; char *name; float score;}std;/*定義結構類型std*/ 之后即可以定義這種類型的結構變量。 如:std stu1, stu2; 3.文件包含#include 文件包含命令是將另外的文件插入到本文件中,作為一個整體文件編譯。只有用#include命令包含了相應頭文件,才可以調用庫中的函數。包含命令的一般使用形式為:#include“ 文件名”或#include 4.6.2 庫函數 1.本征函數頭文件intrins.h intrins.h含有常用的本征函數,本征函數也稱內聯函數,這種函數不采用調用形式,編譯時直接將代碼插入當前行。 2.SFR定義的頭文件regxxx.h 其中定義了各種型號單片機中特殊功能寄存器及特殊功能寄存器中特定位的定義,是用C語言對單片機編程時最為常用的頭文件。 3.絕對地址訪問宏定義頭文件absacc.h 此頭文件定義了幾個宏,以確定各存儲空間的絕對地址。通過包含此頭文件,可以定義直接訪問擴展存儲器的變量。 常用的庫函數頭文件還有:stdlib.h(標準函數)、string.h(字符串函數)、stdio.h(一般I/O函數)、stdarg.h(變量參數表)等 4.7 匯編語言與C語言混合編程4.7.1 C程序與匯編程序之間的參數傳遞 在混合語言編程中,需要解決的主要問題是入口參數和出口參數的傳遞。C51可以使用寄存器來傳遞參數對于C51,它對寄存器的使用通常是隱性的,以Keil為例,他用寄存器最多只能傳遞3個參數),也可以使用固定的存儲器或堆棧。 參數個數 參數類型 參數類型 參數類型 參數類型 char int Long或float 指針 1 R7 R6和R7 R4~R7 R1~R3 2 R5 R4和R5 R4~R7 R1~R3 3 R3 R2和R3 未指定 R1~R3 4.7 匯編語言與C語言混合編程4.7.1 C程序與匯編程序之間的參數傳遞 Keil 在函數返回值方面的規定見表 函數返回值類型 寄存器 Bit CY Char R7 Int R6或R7 Long R4~R7 Float R4~R7 指針 R1~R3 4.7 匯編語言與C語言混合編程4.7.1 C程
總結
以上是生活随笔為你收集整理的c语言中void delay0.5(),第5章补充 单片机C语言基础.ppt的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 苹果 iOS 16.4 测试版暗示苹果
- 下一篇: 南方电网上市公司股票