版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、中國(guó)礦業(yè)大學(xué)機(jī)電工程學(xué)院-張有忠 版權(quán)所有 2005-12現(xiàn)場(chǎng)總線技術(shù)1SJA1000寄存器nBasicCAN模式寄存器列表模式寄存器列表n控制寄存器CRn命令寄存器CMRn狀態(tài)寄存器SRn中斷寄存器IRn發(fā)送緩沖器區(qū)n接收緩沖器n驗(yàn)收代碼寄存器ACRn驗(yàn)收屏蔽寄存器AMRnPeliCAN寄存器地址列表寄存器地址列表n模式寄存器MODn命令寄存器CMRn狀態(tài)寄存器SRn中斷寄存器IRn中斷允許寄存器IERn仲裁丟失捕捉寄存器ALCn錯(cuò)誤代碼捕捉寄存器ECCn錯(cuò)誤報(bào)警限額寄存器EWLRnRX錯(cuò)誤計(jì)數(shù)寄存器RXERRnTX 錯(cuò)誤計(jì)數(shù)寄存器TXERRn發(fā)送緩沖器TXBn單濾波、標(biāo)準(zhǔn)幀濾波器配置n單濾
2、波、擴(kuò)展幀濾波器配置n雙濾波、標(biāo)準(zhǔn)幀濾波器配置n雙濾波、擴(kuò)展幀濾波器配置nRX報(bào)文計(jì)數(shù)器RMCnRX緩沖器起始地址寄存器n總線時(shí)序寄存器BTR0n總線定時(shí)寄存器BTR1n輸出控制寄存器OCRn時(shí)鐘分頻寄存器CDR中國(guó)礦業(yè)大學(xué)機(jī)電工程學(xué)院-張有忠 版權(quán)所有 2005-12現(xiàn)場(chǎng)總線技術(shù)2BasicCAN模式寄存器列表n控制器段中國(guó)礦業(yè)大學(xué)機(jī)電工程學(xué)院-張有忠 版權(quán)所有 2005-12現(xiàn)場(chǎng)總線技術(shù)3BasicCAN模式寄存器列表(續(xù)1)n發(fā)送緩沖器中國(guó)礦業(yè)大學(xué)機(jī)電工程學(xué)院-張有忠 版權(quán)所有 2005-12現(xiàn)場(chǎng)總線技術(shù)4BasicCAN模式寄存器列表(續(xù)2)n接收緩沖器及時(shí)鐘分配器中國(guó)礦業(yè)大學(xué)機(jī)電工程
3、學(xué)院-張有忠 版權(quán)所有 2005-12現(xiàn)場(chǎng)總線技術(shù)5basican寄存器介紹-控制寄存器CRn控制寄存器(CR,地址0)n改變SJA1000工作狀態(tài)n通過微處理器進(jìn)行置位/復(fù)位n微控制器對(duì)控制寄存器進(jìn)行讀/寫操作注:1、位為1有效 2、X表示這些位的值不受影響中國(guó)礦業(yè)大學(xué)機(jī)電工程學(xué)院-張有忠 版權(quán)所有 2005-12現(xiàn)場(chǎng)總線技術(shù)6命令寄存器CMRn命令寄存器(CMR,地址1)n微控制器發(fā)送到命令寄存器的命令啟動(dòng)一次傳輸層的操作n微控制器對(duì)命令寄存器只寫只寫,讀命令寄存器的結(jié)果總是“1111 1111”中國(guó)礦業(yè)大學(xué)機(jī)電工程學(xué)院-張有忠 版權(quán)所有 2005-12現(xiàn)場(chǎng)總線技術(shù)7狀態(tài)寄存器SRn狀態(tài)寄
4、存器(SR,地址2)n狀態(tài)寄存器的內(nèi)容反映總線控制器的狀態(tài)n狀態(tài)寄存器為只讀存儲(chǔ)器中國(guó)礦業(yè)大學(xué)機(jī)電工程學(xué)院-張有忠 版權(quán)所有 2005-12現(xiàn)場(chǎng)總線技術(shù)8中斷寄存器IRn中斷寄存器(IR,地址3)n識(shí)別SJA1000中斷源n寄存器任一位(及一位以上)被置位時(shí),/INT引腳被激活(低電平)n該寄存器被微處理器讀出后,所有位被SJA1000復(fù)位,/INT引腳電平浮動(dòng)(高阻狀態(tài))n微處理器只讀注:在錯(cuò)誤中斷開啟情況下,總線關(guān)閉時(shí)錯(cuò)誤中斷位被置位中國(guó)礦業(yè)大學(xué)機(jī)電工程學(xué)院-張有忠 版權(quán)所有 2005-12現(xiàn)場(chǎng)總線技術(shù)9發(fā)送緩沖器區(qū)n發(fā)送緩沖器是用來存儲(chǔ)微控制器要SJA1000 發(fā)送的報(bào)文n分為描述符區(qū)和
5、數(shù)據(jù)區(qū)n發(fā)送緩沖器的讀/寫只能由微控制器在工作模式下完成,在復(fù)位模式下讀出的值總是FFH中國(guó)礦業(yè)大學(xué)機(jī)電工程學(xué)院-張有忠 版權(quán)所有 2005-12現(xiàn)場(chǎng)總線技術(shù)10接收緩沖器n接收緩沖器的全部列表和發(fā)送緩沖器類似n接收緩沖器是RXFIFO 中可訪問的部分,位于CAN 地址的20-29 之間n識(shí)別碼、遠(yuǎn)程發(fā)送請(qǐng)求位和數(shù)據(jù)長(zhǎng)度碼同發(fā)送緩沖器的相同,只不過是在地址20-29 中國(guó)礦業(yè)大學(xué)機(jī)電工程學(xué)院-張有忠 版權(quán)所有 2005-12現(xiàn)場(chǎng)總線技術(shù)11驗(yàn)收代碼寄存器ACRn在驗(yàn)收濾波器的幫助下,CAN 控制器能夠允許RXFIFO 只接收同識(shí)別碼和驗(yàn)收濾波器中預(yù)設(shè)值相一致的報(bào)文n驗(yàn)收濾波器通過驗(yàn)收代碼寄存器
6、ACR和驗(yàn)收屏蔽寄存器AMR來定義n驗(yàn)收代碼寄存器ACR,地址4n復(fù)位請(qǐng)求位被置1(當(dāng)前)時(shí),這個(gè)寄存器是可以訪問(讀/寫)n如果一條報(bào)文通過了驗(yàn)收濾波器的測(cè)試而且接收緩沖器又有空間,那么標(biāo)識(shí)符和數(shù)據(jù)將被分別順次寫入RXFIFO n當(dāng)報(bào)文被正確的接收完畢就會(huì):n接收狀態(tài)位置1(滿)n接收中斷使能位置1(使能),接收中斷置1(產(chǎn)生中斷)中國(guó)礦業(yè)大學(xué)機(jī)電工程學(xué)院-張有忠 版權(quán)所有 2005-12現(xiàn)場(chǎng)總線技術(shù)12驗(yàn)收屏蔽寄存器AMRn驗(yàn)收屏蔽寄存器AMR,地址5n如果復(fù)位請(qǐng)求位置1(當(dāng)前),這個(gè)寄存器可以被訪問(讀/寫)n驗(yàn)收屏蔽寄存器定義驗(yàn)收代碼寄存器的相應(yīng)位對(duì)驗(yàn)收濾波器是相關(guān)的(AM.X = 0
7、 )或無關(guān)的(AM.X = 1),(即可為任意值)n驗(yàn)收代碼位(AC.7-AC.0)和標(biāo)識(shí)碼的高8 位(ID.10-ID.3)與驗(yàn)收屏蔽位與驗(yàn)收屏蔽位AM.7-AM.0的的”相關(guān)相關(guān)”的位的對(duì)應(yīng)位的位的對(duì)應(yīng)位必須相等,即如果滿足以下條件的描述則報(bào)文被接收n(ID.10 to ID.3) (AC.7 to AC.0) (AM.7 to AM.0) 1111 1111 BnID 10010001標(biāo)識(shí)符高8位nAC 10010110驗(yàn)收代碼位neq= 11111000驗(yàn)收nAM 00000111驗(yàn)收屏蔽位nV= 11111111驗(yàn)收屏蔽結(jié)果,通過中國(guó)礦業(yè)大學(xué)機(jī)電工程學(xué)院-張有忠 版權(quán)所有 2005-
8、12現(xiàn)場(chǎng)總線技術(shù)13PeliCAN寄存器地址列表總線時(shí)序0總線時(shí)序1總線時(shí)序0總線時(shí)序1總線時(shí)序0總線時(shí)序1錯(cuò)誤報(bào)警限額錯(cuò)誤報(bào)警限額錯(cuò)誤報(bào)警限額中國(guó)礦業(yè)大學(xué)機(jī)電工程學(xué)院-張有忠 版權(quán)所有 2005-12現(xiàn)場(chǎng)總線技術(shù)14PeliCAN寄存器地址列表(續(xù)1)RX標(biāo)識(shí)碼1RX標(biāo)識(shí)碼1RX標(biāo)識(shí)碼2RX標(biāo)識(shí)碼2TX標(biāo)識(shí)碼1TX標(biāo)識(shí)碼2TX標(biāo)識(shí)碼1TX標(biāo)識(shí)碼2RX標(biāo)識(shí)碼3RX標(biāo)識(shí)碼4TX標(biāo)識(shí)碼3TX標(biāo)識(shí)碼4中國(guó)礦業(yè)大學(xué)機(jī)電工程學(xué)院-張有忠 版權(quán)所有 2005-12現(xiàn)場(chǎng)總線技術(shù)15PeliCAN寄存器地址列表(續(xù)2)RX報(bào)文計(jì)數(shù)器RX報(bào)文計(jì)數(shù)器RX緩沖區(qū)起始地址(RASB)中國(guó)礦業(yè)大學(xué)機(jī)電工程學(xué)院-張有忠
9、版權(quán)所有 2005-12現(xiàn)場(chǎng)總線技術(shù)16模式寄存器MOD,CAN地址0中國(guó)礦業(yè)大學(xué)機(jī)電工程學(xué)院-張有忠 版權(quán)所有 2005-12現(xiàn)場(chǎng)總線技術(shù)17命令寄存器CMR,CAN地址1中國(guó)礦業(yè)大學(xué)機(jī)電工程學(xué)院-張有忠 版權(quán)所有 2005-12現(xiàn)場(chǎng)總線技術(shù)18狀態(tài)寄存器SR,CAN地址2nCAN地址2,狀態(tài)寄存器反映CAN 控制器的狀態(tài),只讀寄存器中國(guó)礦業(yè)大學(xué)機(jī)電工程學(xué)院-張有忠 版權(quán)所有 2005-12現(xiàn)場(chǎng)總線技術(shù)19狀態(tài)寄存器SR (續(xù)1)中國(guó)礦業(yè)大學(xué)機(jī)電工程學(xué)院-張有忠 版權(quán)所有 2005-12現(xiàn)場(chǎng)總線技術(shù)20中斷寄存器IR,CAN地址3n中斷寄存器IR,CAN地址3n中斷源的識(shí)別n當(dāng)寄存器的一位或
10、多位被置位時(shí),CAN 中斷將反映到CPUnCPU讀此寄存器的時(shí)候除了接收中斷外除了接收中斷外的所有位都被復(fù)位n只讀存儲(chǔ)器中國(guó)礦業(yè)大學(xué)機(jī)電工程學(xué)院-張有忠 版權(quán)所有 2005-12現(xiàn)場(chǎng)總線技術(shù)21中斷寄存器IR(續(xù))n 中國(guó)礦業(yè)大學(xué)機(jī)電工程學(xué)院-張有忠 版權(quán)所有 2005-12現(xiàn)場(chǎng)總線技術(shù)22中斷允許寄存器IER,CAN地址4n中斷使能寄存器IER,CAN地址4n該寄存器能使不同類型的中斷源對(duì)CPU有效n可讀/寫寄存器中國(guó)礦業(yè)大學(xué)機(jī)電工程學(xué)院-張有忠 版權(quán)所有 2005-12現(xiàn)場(chǎng)總線技術(shù)23中斷允許寄存器(續(xù))中國(guó)礦業(yè)大學(xué)機(jī)電工程學(xué)院-張有忠 版權(quán)所有 2005-12現(xiàn)場(chǎng)總線技術(shù)24仲裁丟失捕捉
11、寄存器ALC,CAN地址11n仲裁丟失捕捉寄存器,ALC,CAN地址11n該寄存器包括了仲裁丟失的位置的信息,只讀存儲(chǔ)器,保留位的讀出值為0n仲裁丟失時(shí),會(huì)產(chǎn)生相應(yīng)的仲裁丟失中斷(中斷允許時(shí))。同時(shí),位流處理器的當(dāng)前位的位置被捕捉送入仲裁丟失捕捉寄存器。一直到用戶通過軟件讀這個(gè)值,寄存器中的內(nèi)容都不會(huì)改變,隨后捕捉機(jī)制又被激活n讀中斷寄存器時(shí),中斷寄存器中相應(yīng)的中斷標(biāo)志位被清除。直到仲裁丟失捕捉寄存器被讀一次之后,新的仲裁丟失中斷才可能有效中國(guó)礦業(yè)大學(xué)機(jī)電工程學(xué)院-張有忠 版權(quán)所有 2005-12現(xiàn)場(chǎng)總線技術(shù)25錯(cuò)誤代碼捕捉寄存器ECC,CAN地址12n錯(cuò)誤代碼捕捉寄存器,ECC,CAN地址1
12、2n包含總線錯(cuò)誤的類型和位置信息n只讀中國(guó)礦業(yè)大學(xué)機(jī)電工程學(xué)院-張有忠 版權(quán)所有 2005-12現(xiàn)場(chǎng)總線技術(shù)26錯(cuò)誤報(bào)警限額寄存器EWLR,CAN地址13n錯(cuò)誤報(bào)警限額寄存器,EWLR,CAN地址13n定義錯(cuò)誤報(bào)警限額n復(fù)位模式時(shí)可讀/寫n硬件復(fù)位后錯(cuò)誤報(bào)警限額寄存器的默認(rèn)值為96n復(fù)位模式取消后,該寄存器的新值引起的出錯(cuò)狀態(tài)的改變和錯(cuò)誤報(bào)警中斷才有可能發(fā)生中國(guó)礦業(yè)大學(xué)機(jī)電工程學(xué)院-張有忠 版權(quán)所有 2005-12現(xiàn)場(chǎng)總線技術(shù)27RX錯(cuò)誤計(jì)數(shù)寄存器RXERR,CAN地址14nRX錯(cuò)誤計(jì)數(shù)寄存器,RXERR,CAN地址14nRX錯(cuò)誤計(jì)數(shù)寄存器反應(yīng)了接收錯(cuò)誤計(jì)數(shù)器的當(dāng)前值n硬件復(fù)位后寄存器被初始化
13、為0n在工作模式中,只讀寄存器;在復(fù)位模式中可寫寄存器n如果發(fā)生總線關(guān)閉RX錯(cuò)誤計(jì)數(shù)器被初始化為0n總線關(guān)閉期間寫寄存器無效n軟件復(fù)位(MOD.0=1)時(shí),接收錯(cuò)誤計(jì)數(shù)器的值不受影響n注意:n只有先進(jìn)入復(fù)位模式,才有可能由CPU改變RX錯(cuò)誤計(jì)數(shù)器值n復(fù)位模式被取消后,由新的內(nèi)容引起的錯(cuò)誤狀態(tài)的改變、錯(cuò)誤報(bào)警、錯(cuò)誤中斷才可能發(fā)生中國(guó)礦業(yè)大學(xué)機(jī)電工程學(xué)院-張有忠 版權(quán)所有 2005-12現(xiàn)場(chǎng)總線技術(shù)28TX 錯(cuò)誤計(jì)數(shù)寄存器TXERR,CAN地址15nTX錯(cuò)誤計(jì)數(shù)寄存器,TXERR,CAN地址15nTX 錯(cuò)誤計(jì)數(shù)寄存器反映了發(fā)送錯(cuò)誤計(jì)數(shù)器的當(dāng)前值n工作模式中,只讀;復(fù)位模式中,可寫n硬件復(fù)位后,寄存
14、器被初始化為0n如果總線關(guān)閉,TX 錯(cuò)誤計(jì)數(shù)器被初始化為127 來計(jì)算總線定義的最小時(shí)間(128 個(gè)總線空閑信號(hào))。這段時(shí)間里讀TX 錯(cuò)誤計(jì)數(shù)器將反映出總線關(guān)閉恢復(fù)的狀態(tài)信息n在總線關(guān)閉時(shí),向TXERR 寫0-254范圍的值會(huì)清除總線關(guān)閉標(biāo)志n在復(fù)位模式被清除后,控制器會(huì)等待一個(gè)11位的連續(xù)隱性位(總線空閑)n軟件復(fù)位(MOD.0=1)時(shí),發(fā)送錯(cuò)誤計(jì)數(shù)器的值不受影響中國(guó)礦業(yè)大學(xué)機(jī)電工程學(xué)院-張有忠 版權(quán)所有 2005-12現(xiàn)場(chǎng)總線技術(shù)29發(fā)送緩沖器TXB,CAN地址1628n發(fā)送緩沖器的布局n標(biāo)識(shí)碼區(qū)n標(biāo)識(shí)碼區(qū)的第一個(gè)字節(jié)是幀信息字節(jié)(結(jié)構(gòu)信息),說明幀格式(SFF或EFF)、遠(yuǎn)程幀或數(shù)據(jù)幀和
15、數(shù)據(jù)長(zhǎng)度nSFF(標(biāo)準(zhǔn)幀格式)有兩個(gè)字節(jié)的標(biāo)識(shí)碼,EFF(擴(kuò)展幀格式)有四個(gè)字節(jié)的標(biāo)識(shí)碼n數(shù)據(jù)區(qū)n數(shù)據(jù)區(qū)最多長(zhǎng)8 個(gè)數(shù)據(jù)字節(jié)n發(fā)送緩沖器長(zhǎng)13個(gè)字節(jié),在CAN 地址的16-28n注意n使用CAN 地址的96-108可以直接訪問發(fā)送緩沖器的RAM,這個(gè)RAM區(qū)是為發(fā)送緩沖器保留的,下面三個(gè)字節(jié)是通用的CAN地址109、110和111中國(guó)礦業(yè)大學(xué)機(jī)電工程學(xué)院-張有忠 版權(quán)所有 2005-12現(xiàn)場(chǎng)總線技術(shù)30驗(yàn)收濾波器n驗(yàn)收濾波器n只有當(dāng)接收?qǐng)?bào)文中的標(biāo)識(shí)碼和驗(yàn)收濾波器預(yù)定義的值相等時(shí),CAN 控制器才允許將已接收?qǐng)?bào)文存入RXFIFOn驗(yàn)收濾波器由驗(yàn)收代碼寄存器(ACRn)和驗(yàn)收屏蔽寄存器AMRn定義
16、n要接收的報(bào)文的標(biāo)識(shí)碼位模式在驗(yàn)收代碼寄存器中定義,相應(yīng)的驗(yàn)收屏蔽寄存器允許定義驗(yàn)收代碼寄存器中的某些位為無關(guān),即可為任意值n在模式寄存器MOD中選擇MOD.3,AFMn單濾波器模式AFM=1n雙濾波器模式AFM=030中國(guó)礦業(yè)大學(xué)機(jī)電工程學(xué)院-張有忠 版權(quán)所有 2005-12現(xiàn)場(chǎng)總線技術(shù)31驗(yàn)收濾波器-單濾波器n單濾波器配置n單濾波器配置定義一個(gè)4 字節(jié)長(zhǎng)濾波器n濾波器字節(jié)和報(bào)文字節(jié)之間位的對(duì)應(yīng)關(guān)系取決于當(dāng)前接收幀格式n標(biāo)準(zhǔn)幀格式n如果接收的是標(biāo)準(zhǔn)幀格式的信息,在驗(yàn)收濾波中使用包括RTR在內(nèi)的完整標(biāo)識(shí)碼和前兩個(gè)數(shù)據(jù)字節(jié)用于數(shù)據(jù)濾波n如果由于置位RTR位而導(dǎo)致沒有數(shù)據(jù)字節(jié),或因?yàn)樵O(shè)置相應(yīng)的數(shù)據(jù)
17、長(zhǎng)度代碼而沒有或只有一個(gè)數(shù)據(jù)字節(jié),報(bào)文也會(huì)被接受n對(duì)于一個(gè)成功接收的報(bào)文所有單個(gè)位在濾波器中的比較結(jié)果都必須為“接受”(下頁圖)31中國(guó)礦業(yè)大學(xué)機(jī)電工程學(xué)院-張有忠 版權(quán)所有 2005-12現(xiàn)場(chǎng)總線技術(shù)32標(biāo)準(zhǔn)幀濾波32n(ID.10 to ID.3) (AC.7 to AC.0) (AM.7 to AM.0) 1111 1111 B中國(guó)礦業(yè)大學(xué)機(jī)電工程學(xué)院-張有忠 版權(quán)所有 2005-12現(xiàn)場(chǎng)總線技術(shù)33標(biāo)準(zhǔn)幀濾波(續(xù))n注意nAMR1 和ACR1 的低四位不用,為了和將來的產(chǎn)品兼容這些位可通過設(shè)置AMR1.4、AMR1.3、AMR1.2和AMR1.0為“1” 而編程為“無關(guān),Dont Ca
18、re”33中國(guó)礦業(yè)大學(xué)機(jī)電工程學(xué)院-張有忠 版權(quán)所有 2005-12現(xiàn)場(chǎng)總線技術(shù)34擴(kuò)展幀濾波n擴(kuò)展幀格式n如果接收的報(bào)文是擴(kuò)展幀格式報(bào)文,包括RTR 位的全部標(biāo)識(shí)碼將被用于數(shù)據(jù)濾波n為了成功接收?qǐng)?bào)文每個(gè)位的比較后都必須發(fā)出接受信號(hào)34ACRAMRID中國(guó)礦業(yè)大學(xué)機(jī)電工程學(xué)院-張有忠 版權(quán)所有 2005-12現(xiàn)場(chǎng)總線技術(shù)35擴(kuò)展幀濾波(續(xù))n注意nAMR3 的最低兩位和ACR3最低兩位不用,為了和將來的產(chǎn)品兼容這些位應(yīng)該通過置位AMR3.1 和AMR3.0 來編程為“無關(guān),Dont Care”35中國(guó)礦業(yè)大學(xué)機(jī)電工程學(xué)院-張有忠 版權(quán)所有 2005-12現(xiàn)場(chǎng)總線技術(shù)36驗(yàn)收濾波器-雙濾波器n雙
19、濾波器配置n該配置定義兩個(gè)短濾波器n一條接收的報(bào)文要和兩個(gè)濾波器比較來決定是否放入接收緩沖器中n至少有一個(gè)濾波器驗(yàn)收通過,接收的報(bào)文才有效n濾波器字節(jié)和報(bào)文字節(jié)之間位的對(duì)應(yīng)關(guān)系取決于當(dāng)前接收的幀格式36中國(guó)礦業(yè)大學(xué)機(jī)電工程學(xué)院-張有忠 版權(quán)所有 2005-12現(xiàn)場(chǎng)總線技術(shù)37標(biāo)準(zhǔn)幀濾波n接收到標(biāo)準(zhǔn)幀報(bào)文時(shí),兩個(gè)濾波器是不一樣n第一個(gè)濾波器比較包括RTR 位的整個(gè)標(biāo)準(zhǔn)標(biāo)識(shí)碼和報(bào)文的第一個(gè)數(shù)據(jù)字節(jié)n第二個(gè)濾波器只比較包括RTR 位的整個(gè)標(biāo)準(zhǔn)標(biāo)識(shí)碼n為了成功接收?qǐng)?bào)文所有單個(gè)位的比較時(shí)應(yīng)至少有一個(gè)濾波器表示“接受”nRTR位置位或數(shù)據(jù)長(zhǎng)度代碼是0時(shí)表示沒有數(shù)據(jù)字節(jié)存在,無論怎樣只要從開始到RTR位的部
20、分比較結(jié)果為“接受”,接收的報(bào)文就可以通過濾波器1n如果沒有向?yàn)V波器請(qǐng)求數(shù)據(jù)字節(jié)濾波,AMR1 和AMR3 的低四位必須被置為“1”(無關(guān))n兩個(gè)濾波器對(duì)包括RTR 位在內(nèi)的整個(gè)標(biāo)準(zhǔn)標(biāo)識(shí)碼進(jìn)行濾波識(shí)別37中國(guó)礦業(yè)大學(xué)機(jī)電工程學(xué)院-張有忠 版權(quán)所有 2005-12現(xiàn)場(chǎng)總線技術(shù)38擴(kuò)展幀濾波n接收到擴(kuò)展幀信息時(shí)兩個(gè)濾波器相同,兩個(gè)濾波器都只比較擴(kuò)展識(shí)別碼的前兩個(gè)字節(jié)n必須在所有單個(gè)位的比較時(shí)至少有一個(gè)濾波器表示“接收”38中國(guó)礦業(yè)大學(xué)機(jī)電工程學(xué)院-張有忠 版權(quán)所有 2005-12現(xiàn)場(chǎng)總線技術(shù)39RX報(bào)文計(jì)數(shù)器RMC,CAN 地址29nRX報(bào)文計(jì)數(shù)器寄存器nRMC,CAN 地址29n反映RXFIFO
21、中可用的信息數(shù)目,其值每次接收到報(bào)文時(shí)加1,每次釋放接收緩沖器減1n復(fù)位后寄存器值為0n注1:這些位不能寫,讀出永遠(yuǎn)是0中國(guó)礦業(yè)大學(xué)機(jī)電工程學(xué)院-張有忠 版權(quán)所有 2005-12現(xiàn)場(chǎng)總線技術(shù)40RX緩沖器起始地址寄存器,CAN 地址30nRBSA寄存器,CAN 地址30n反映接收緩沖器窗口中存放接收到的報(bào)文第一個(gè)字節(jié)的內(nèi)部RAM地址n內(nèi)部RAM起始于CAN地址32,可以被CPU 讀/寫訪問(復(fù)位模式只能寫)n例子n如果RBSA = 24(十進(jìn)制),當(dāng)前在接收緩沖器窗口(CAN地址1628)中的可視報(bào)文被存儲(chǔ)在內(nèi)部起始地址為24的RAM中n因?yàn)镽AM也被直接列入CAN 地址空間(起始地址32等于
22、RAM地址0),所以這條信息也可以用CAN 地址56及隨后字節(jié)地址訪問CAN 地址=RBSA+32 = 24+32 = 56n如果信息超過RAM地址63會(huì)從地址0繼續(xù) (RAM地址64開始是TX緩沖區(qū)空間)n當(dāng)FIFO中至少有一條可用報(bào)文時(shí)就將會(huì)執(zhí)行釋放接收緩沖器命令,釋放接收緩沖器后RBSA更新為下一條報(bào)文的開始n硬件復(fù)位時(shí)指針初始化為00Hn軟件復(fù)位(設(shè)置為復(fù)位模式,MOD.0=1)時(shí)指針保持原值,但FIFO被清空n雖然RAM的內(nèi)容是不會(huì)改變,但下一條接收的或傳送的信息將會(huì)覆蓋當(dāng)前在接收緩沖器窗口的可視信息nRX 緩沖器起始地址寄存器在工作模式中只讀,在復(fù)位模式中是可讀/寫n必須注意,寫訪
23、問RBSA首次有效是在下一個(gè)內(nèi)部時(shí)鐘的上升沿PeliCAN寄存器中國(guó)礦業(yè)大學(xué)機(jī)電工程學(xué)院-張有忠 版權(quán)所有 2005-12現(xiàn)場(chǎng)總線技術(shù)41nBasicCAN、PeliCAN模式n公共寄存器介紹中國(guó)礦業(yè)大學(xué)機(jī)電工程學(xué)院-張有忠 版權(quán)所有 2005-12現(xiàn)場(chǎng)總線技術(shù)42總線時(shí)序寄存器BTR0,CAN地址6n總線時(shí)序寄存器BTR0,CAN地址6n總線定時(shí)寄存器0定義波特率預(yù)制器BRP(Baud Rate Prescaler)和同步跳轉(zhuǎn)寬度SJW (Synchronization Jump Width)n復(fù)位模式有效時(shí),BTR0寄存器可讀/寫n如果選擇PeliCAN模式,此寄存器在工作模式中只讀,在B
24、asicCAN模式中讀出值總是FFHn波特率預(yù)置器域nCAN系統(tǒng)時(shí)鐘tSCL的周期可編程,而且決定了相應(yīng)的位時(shí)序nCAN系統(tǒng)時(shí)鐘由如下公式計(jì)算ntSCL =2tCLK X (32 X BRP.5 +16 X BRP.4 + 8 X BRP.3 + 4 X BRP.2 + 2 X BRP.1 + BRP.0 + 1)ntCLK:XTAL的振蕩周期 = 1/fXTALn同步跳轉(zhuǎn)寬度位域n為了補(bǔ)償在不同總線控制器的時(shí)鐘振蕩器之間的相位偏移,任何總線控制器必須在當(dāng)前傳送的相關(guān)信號(hào)邊沿重新同步n同步跳轉(zhuǎn)寬度tSJW定義了每一位的位周期再被重新同步時(shí)縮短或延長(zhǎng)的時(shí)鐘周期的最大數(shù)目ntSJW=tSCL (2
25、 X SJW.1 + SJW.0 + 1)中國(guó)礦業(yè)大學(xué)機(jī)電工程學(xué)院-張有忠 版權(quán)所有 2005-12現(xiàn)場(chǎng)總線技術(shù)43總線定時(shí)寄存器BTR1,CAN地址7nBTR1,CAN地址7n定義每個(gè)位周期的長(zhǎng)度、采樣點(diǎn)位置和在每個(gè)采樣點(diǎn)的采樣數(shù)目n在復(fù)位模式中,寄存器可以讀/寫訪問n在PeliCAN 模式的工作模式中,這個(gè)寄存器只讀,在BasicCAN 模式中讀出值總是FFHn采樣數(shù)目 SAMnSAM=0,單倍采樣,每位采樣1次。建議使用在高速總線上(SAE C級(jí))nSAM=1,三倍采樣,每位采樣3次。建議在中低速總線上使用(SAE A,B級(jí)),可以有效消除總線上的毛刺n時(shí)間段1和時(shí)間段2nTSEG1和T
26、SEG2決定每一位的時(shí)鐘周期數(shù)目和采樣點(diǎn)的位置ntSYNCSEG=1 X tSCLntTSEG1 = tSCL X (8 X TSEG1.3 + 4 X TSEG1.2 + 2 X TSEG1.1 + TSEG1.0 + 1)ntTSEG2 = tSCL X (4 X TSEG2.2 + 2 X TSEG2.1 + TSEG2.1 + 1)中國(guó)礦業(yè)大學(xué)機(jī)電工程學(xué)院-張有忠 版權(quán)所有 2005-12現(xiàn)場(chǎng)總線技術(shù)44總線定時(shí)寄存器1(續(xù))ntSCL = 4 tCLKnBRP = 000001ntSEG1 = 6 tSCLnTSEG1 = 0101ntTSEG2 = 3 tSCLnTSEG2 = 0
27、10中國(guó)礦業(yè)大學(xué)機(jī)電工程學(xué)院-張有忠 版權(quán)所有 2005-12現(xiàn)場(chǎng)總線技術(shù)45輸出控制寄存器OCR,CAN地址8n輸出控制寄存器OCR,CAN地址8n由軟件控制不同輸出驅(qū)動(dòng)配置n在復(fù)位模式中,寄存器可被讀/寫訪問n在PeliCAN模式的工作模式中,這個(gè)寄存器只讀,在BasicCAN 模式中讀出值總是FFH中國(guó)礦業(yè)大學(xué)機(jī)電工程學(xué)院-張有忠 版權(quán)所有 2005-12現(xiàn)場(chǎng)總線技術(shù)46時(shí)鐘分頻寄存器CDR,CAN地址31n時(shí)鐘分頻寄存器,CDR,CAN地址31n注1:此位不能寫,讀出總是0nCD.2-CD.0n復(fù)位模式和工作模式中一樣,CD.2-CD.0 是可以無限制訪問n這些位是用來定義外部CLKO
28、UT引腳上的輸出時(shí)鐘頻率Clock Off中國(guó)礦業(yè)大學(xué)機(jī)電工程學(xué)院-張有忠 版權(quán)所有 2005-12現(xiàn)場(chǎng)總線技術(shù)47現(xiàn)場(chǎng)總線技術(shù)C語言 概述教材:現(xiàn)場(chǎng)總線CAN原理與應(yīng)用技術(shù)作者:繞運(yùn)濤、鄒繼軍、鄭勇薈中國(guó)礦業(yè)大學(xué)機(jī)電工程學(xué)院2012-09中國(guó)礦業(yè)大學(xué)機(jī)電工程學(xué)院-張有忠 版權(quán)所有 2005-12現(xiàn)場(chǎng)總線技術(shù)4848C語言實(shí)例 1n輸出一條信息的C程序nmain()nprintf(Hello, World!n);nn運(yùn)行后在屏幕上輸出:nHello, World!n_中國(guó)礦業(yè)大學(xué)機(jī)電工程學(xué)院-張有忠 版權(quán)所有 2005-12現(xiàn)場(chǎng)總線技術(shù)4949C語言實(shí)例 2n由用戶輸入兩個(gè)整數(shù),計(jì)算機(jī)輸出兩個(gè)
29、數(shù)中最大的一個(gè)由用戶輸入兩個(gè)整數(shù),計(jì)算機(jī)輸出兩個(gè)數(shù)中最大的一個(gè)nmain() /*主函數(shù)*/nnint x,y,z; /*定義變量*/nscanf(%d,%d,&x,&y); /*從鍵盤輸入兩個(gè)數(shù)*/nz = max(x,y); /*找出最大的一個(gè)數(shù)并賦給 z*/nprintf(The Max number is %d,z); /*輸出*/nnint max(int x, int y)nnint z;nif (x y)z = x; /*如果X大于Y就將X的值賦給Z*/nelse z = y; /*否則就將Y的值賦給Z*/nreturn(z); /函數(shù)結(jié)束,返回值給調(diào)用函數(shù)n中國(guó)
30、礦業(yè)大學(xué)機(jī)電工程學(xué)院-張有忠 版權(quán)所有 2005-12現(xiàn)場(chǎng)總線技術(shù)5050C語言程序的特點(diǎn) 1nC程序完全是由函數(shù)構(gòu)成n一個(gè)程序至少要有一個(gè)main()函數(shù),用戶也可以根據(jù)需要設(shè)計(jì)自己的函數(shù),象上面的函數(shù)max()nC語言中提供了豐富的函數(shù),被稱作庫(kù)函數(shù)。標(biāo)準(zhǔn)中提供了一百多個(gè)庫(kù)函數(shù)。利用這些現(xiàn)成的函數(shù),我們可以非常輕松的編寫功能強(qiáng)大的程序nC程序的函數(shù)式結(jié)構(gòu)使得程序非常容易實(shí)現(xiàn)模塊化,便于閱讀和維護(hù)n函數(shù)由兩大部分組成n第一部分是函數(shù)的說明部分如函數(shù)的名稱,函數(shù)的返回值類型,函數(shù)的參數(shù)及類型n第二部分是函數(shù)的實(shí)現(xiàn)部分由花括號(hào)括起來的若干變量定義和語句構(gòu)成nC程序總是從main()函數(shù)開始執(zhí)行n
31、不論main()函數(shù)在程序的什么地方,也就是說,可以將main()函數(shù)放在程序的任何位置nC程序的書寫格式比較自由n可以在一行上寫若干語句,也可以在多行上寫一條語句n每個(gè)語句后面都要有一個(gè)分號(hào)作為語句的結(jié)束中國(guó)礦業(yè)大學(xué)機(jī)電工程學(xué)院-張有忠 版權(quán)所有 2005-12現(xiàn)場(chǎng)總線技術(shù)5151C語言程序的特點(diǎn) 2nC語言中沒有專門的輸入、輸出語句n輸入輸出是通過scanf()和printf()等庫(kù)函數(shù)實(shí)現(xiàn)的nC程序中可以用/* */或/對(duì)任何部分進(jìn)行注釋n好的程序都要有必要的注釋以提高程序的可讀性n/* */可以跨行注釋,/只能在一行注釋n用C語言編寫的程序非常簡(jiǎn)潔nC 語言只有個(gè)32關(guān)鍵字,9種控制語
32、句n程序主要由小寫字母組成,書寫格式自由,它壓縮了其它高級(jí)語言中的冗余的部分n運(yùn)算符非常豐富nC 語言中共有種34運(yùn)算符,可以實(shí)現(xiàn)在其它高級(jí)語言中難以實(shí)現(xiàn)的功能n數(shù)據(jù)結(jié)構(gòu)豐富nC 語言中的數(shù)據(jù)類型有整型、實(shí)型、字符型、數(shù)組類型、指針類型、結(jié)構(gòu)體類型等n派生類型數(shù)據(jù)結(jié)構(gòu)能夠用來實(shí)現(xiàn)非常復(fù)雜的數(shù)據(jù)結(jié)構(gòu),如線性表、鏈表、棧、隊(duì)列、樹、圖等n具有結(jié)構(gòu)化的控制語句n如if() else, while, switch等。并用函數(shù)作為程序模塊,是理想的結(jié)構(gòu)化程序設(shè)計(jì)語言n語法限制不太嚴(yán)格n如對(duì)數(shù)組下標(biāo)越界不作檢查,各種類型的變量可以通用n允許直接訪問物理內(nèi)存,能實(shí)現(xiàn)對(duì)位的操作n生成的目標(biāo)代碼質(zhì)量高,只比匯編
33、語言生成的代碼效率低20左右nC程序的可移植好,不用作太多的修改就可用于其它型號(hào)的計(jì)算機(jī)或其它操作系統(tǒng)中國(guó)礦業(yè)大學(xué)機(jī)電工程學(xué)院-張有忠 版權(quán)所有 2005-12現(xiàn)場(chǎng)總線技術(shù)5252C語言數(shù)據(jù)類型n在語言中,數(shù)據(jù)類型可分為:基本數(shù)據(jù)類型,構(gòu)造數(shù)據(jù)類型,指針類型,空類型四大類n基本數(shù)據(jù)類型n基本數(shù)據(jù)類型最主要的特點(diǎn)是,其值不可以再分解為其它類型n亦即,基本數(shù)據(jù)類型是自我說明的n構(gòu)造數(shù)據(jù)類型n構(gòu)造數(shù)據(jù)類型是根據(jù)已定義的一個(gè)或多個(gè)數(shù)據(jù)類型用構(gòu)造的方法來定義的n亦即,一個(gè)構(gòu)造類型的值可以分解成若干個(gè)“成員”或“元素”。每個(gè)“成員”都是一個(gè)基本數(shù)據(jù)類型或又是一個(gè)構(gòu)造類型n在C語言中,構(gòu)造類型有以下幾種:n
34、數(shù)組類型n結(jié)構(gòu)類型n聯(lián)合類型n指針類型n指針是一種特殊的,同時(shí)又是具有重要作用的數(shù)據(jù)類型n其值用來表示某個(gè)量在內(nèi)存儲(chǔ)器中的地址中國(guó)礦業(yè)大學(xué)機(jī)電工程學(xué)院-張有忠 版權(quán)所有 2005-12現(xiàn)場(chǎng)總線技術(shù)5353C語言數(shù)據(jù)類型(續(xù))n空類型(void)n在調(diào)用函數(shù)值時(shí),通常應(yīng)向調(diào)用者返回一個(gè)函數(shù)值,這個(gè)返回的函數(shù)值是具有一定的數(shù)據(jù)類型的,應(yīng)在函數(shù)定義及函數(shù)說明中給以說明n但是,也有一類函數(shù),調(diào)用后并不需要向調(diào)用者返回函數(shù)值, 這種函數(shù)可以定義為“空類型”,其類型說明符為voidn對(duì)于基本數(shù)據(jù)類型量,按其取值是否可改變又分為常量和變量?jī)煞Nn它們可與數(shù)據(jù)類型結(jié)合起來分類。例如,可分為整型常量、整型變量、浮
35、點(diǎn)常量、浮點(diǎn)變量、字符常量、字符變量、枚舉常量、枚舉變量n在程序中,常量是可以不經(jīng)說明而直接引用的,而變量則必須先說明后使用中國(guó)礦業(yè)大學(xué)機(jī)電工程學(xué)院-張有忠 版權(quán)所有 2005-12現(xiàn)場(chǎng)總線技術(shù)5454整型數(shù)據(jù)中國(guó)礦業(yè)大學(xué)機(jī)電工程學(xué)院-張有忠 版權(quán)所有 2005-12現(xiàn)場(chǎng)總線技術(shù)5555實(shí)型數(shù)據(jù)n實(shí)型數(shù)據(jù)表示的實(shí)際上就是我們生活帶小數(shù)的數(shù)值n在程序運(yùn)行過程中不能被改變其值的實(shí)型數(shù)被稱為實(shí)型常量實(shí)型常量浮點(diǎn)數(shù)n在程序運(yùn)行過程中可以改變其值的實(shí)型量被稱為實(shí)型變量實(shí)型變量nmain()nnfloat x;ndouble y;nx=123456.789; /只能將123456.7七 /位有效數(shù)字賦值給
36、xny=123456.789; /能將全部數(shù)位賦值給ynprintf(%f,%f,x,y);nn說明n一個(gè)實(shí)型常量賦值給一個(gè)實(shí)型變量時(shí),只根據(jù)實(shí)型變量表示的有效數(shù)字的位數(shù),在實(shí)型常量中按從左向右的方向截取數(shù)據(jù)nFloat型的變量只能保存7位有效數(shù)字ndouble 型的變量只能保存1516位的有效數(shù)字中國(guó)礦業(yè)大學(xué)機(jī)電工程學(xué)院-張有忠 版權(quán)所有 2005-12現(xiàn)場(chǎng)總線技術(shù)5656字符型數(shù)據(jù)n字符常量nC語言中的字符常量是用單引號(hào)()括起來的一個(gè)字符。如A, x, D, ?, 3,X 等都是字符常量n字符型變量類型和數(shù)值范圍n數(shù)據(jù)類型解釋內(nèi)存中所占位數(shù)表示數(shù)值的范圍nchar有符號(hào)字符型8位1281
37、27nunsigned char無符號(hào)字符型8位0256nC語言中還規(guī)定有另一類字符常量,它們以開頭,被稱作轉(zhuǎn)義字符。如我們前面已多次遇到的n這個(gè)符號(hào),它表示換行符號(hào)。字母n在字符后改變了原來的意義,所以稱這類以開頭的字符為轉(zhuǎn)義字符n字符形式含義nn 換行nt橫向跳格(跳到下一個(gè)輸出區(qū)域)nv豎向跳格nb退格nr回車nf走紙換頁n反斜杠字符n單引號(hào)nddd13位八進(jìn)制數(shù)所代表的字符nxhh12位十六進(jìn)制數(shù)所代表的字符中國(guó)礦業(yè)大學(xué)機(jī)電工程學(xué)院-張有忠 版權(quán)所有 2005-12現(xiàn)場(chǎng)總線技術(shù)5757字符型數(shù)據(jù) 2n字符變量n字符變量是用來存放字符常量的,一個(gè)字符變量中只能存放一個(gè)字符n字符變量的定義
38、形式如:char x1,x2; 定義了兩個(gè)字符型變量n可以使用賦值語句對(duì)變量x1和x2賦值,如:x1=x;x2=y; n字符型數(shù)據(jù)(常量和變量)在內(nèi)存中占一個(gè)字節(jié)的空間n字符在內(nèi)存中以ASCII碼形式存放,實(shí)際上是以二進(jìn)制方式存放n字符數(shù)據(jù)可以當(dāng)成一個(gè)8位二進(jìn)制數(shù)據(jù)看待-特別適合單片機(jī)處理特別適合單片機(jī)處理n字符串常量n字符串常量是用雙引號(hào)括起來的字符序列。如:%d,%d This is my first program!。 C語言規(guī)定字符串的存儲(chǔ)方式為:字符串中的每個(gè)字符(轉(zhuǎn)義字符只能被看成一個(gè)字符)按照它們的ASCII碼值的二進(jìn)制形式存儲(chǔ)在內(nèi)存中,并在存放串中最后一個(gè)字符的位置后面再存入一
39、個(gè)字符0(ASCII碼值為0的字符)n例如:“China_Uni在內(nèi)存中的表示如下,要占個(gè)10字節(jié)n內(nèi)存位置:0 1 2 3 4 5 6 7 8 9n字符: C h i n a _ U n i 0n而x在內(nèi)存中的表示為nx 0(2個(gè)字節(jié))中國(guó)礦業(yè)大學(xué)機(jī)電工程學(xué)院-張有忠 版權(quán)所有 2005-12現(xiàn)場(chǎng)總線技術(shù)5858各類數(shù)值型數(shù)據(jù)之間的混合運(yùn)算n自動(dòng)轉(zhuǎn)換規(guī)則圖解中國(guó)礦業(yè)大學(xué)機(jī)電工程學(xué)院-張有忠 版權(quán)所有 2005-12現(xiàn)場(chǎng)總線技術(shù)5959強(qiáng)制類型轉(zhuǎn)換n強(qiáng)制類型轉(zhuǎn)換是通過類型轉(zhuǎn)換運(yùn)算來實(shí)現(xiàn),其一般形式為n(類型說明符) (表達(dá)式)n其功能是把表達(dá)式的運(yùn)算結(jié)果強(qiáng)制轉(zhuǎn)換成類型說明符所表示的類型n例如:
40、n (float) a 把a(bǔ)轉(zhuǎn)換為實(shí)型n (int)(x+y) 把x+y的結(jié)果轉(zhuǎn)換為整型n在使用強(qiáng)制轉(zhuǎn)換時(shí)應(yīng)注意以下問題:n類型說明符和表達(dá)式都必須加括號(hào)(單個(gè)變量可以不加括號(hào)),如把(int)(x+y)寫成(int)x+y則成了把x轉(zhuǎn)換成int型之后再與y相加了n無論是強(qiáng)制轉(zhuǎn)換或是自動(dòng)轉(zhuǎn)換,都只是為了本次運(yùn)算的需要而對(duì)變量的數(shù)據(jù)長(zhǎng)度進(jìn)行的臨時(shí)性轉(zhuǎn)換,而不改變數(shù)據(jù)說明時(shí)對(duì)該變量定義的類型nmain() n float f=5.75;n printf(int)f=%d,f=%fn,(int)f,f);nn輸出結(jié)果:int f=5, f=5.75n本例表明,f 雖強(qiáng)制轉(zhuǎn)為int型,但只在運(yùn)算中起作
41、用,是臨時(shí)的,而f本身的類型并不改變。因此,(int)f的值為5(刪去了小數(shù))而f的值仍為5.75。 中國(guó)礦業(yè)大學(xué)機(jī)電工程學(xué)院-張有忠 版權(quán)所有 2005-12現(xiàn)場(chǎng)總線技術(shù)6060標(biāo)識(shí)符n什么是標(biāo)識(shí)符什么是標(biāo)識(shí)符n它是用來表示變量名、符號(hào)常量名、函數(shù)名、數(shù)組名、類型名、文件名的有效字符序列。在C語言中各種名稱都是由標(biāo)識(shí)符來表示的。通俗一點(diǎn)說,它就相當(dāng)于是一個(gè)人的名字一樣n標(biāo)識(shí)符的命名規(guī)則標(biāo)識(shí)符的命名規(guī)則nC語言中規(guī)定,標(biāo)識(shí)符只能用字母字母、數(shù)字?jǐn)?shù)字、下劃線下劃線三種字符構(gòu)成,而且標(biāo)識(shí)符的第一個(gè)字符必須是字母或下劃線n合法的標(biāo)識(shí)符: Shi_jin , total , _screenx , su
42、m1,sum2 n不合法的標(biāo)識(shí)符: shi-jin , 1sum, screen*x n標(biāo)識(shí)符的長(zhǎng)度有一定的限制nC99規(guī)定64位標(biāo)識(shí)符n標(biāo)識(shí)符中大寫字母和小寫字母被認(rèn)為是不同的字符,所以對(duì)于下面兩個(gè)標(biāo)識(shí)符Student和student,系統(tǒng)認(rèn)為是不同的名稱中國(guó)礦業(yè)大學(xué)機(jī)電工程學(xué)院-張有忠 版權(quán)所有 2005-12現(xiàn)場(chǎng)總線技術(shù)6161常量和變量n#define PRICE 30nmain()n int num, total; num = 10; total = num*PRICE; printf (total=%d, total);nn在這個(gè)程序中, PRICE這組字符就稱為一個(gè)標(biāo)識(shí)符n在程序
43、運(yùn)行過程中,其值不能被改變的量稱為常量,比如定義后的PRICE稱為符號(hào)常量符號(hào)常量n在程序運(yùn)行過程中,其值能被改變的量稱為變量n提到一個(gè)變量時(shí),我們應(yīng)該能想到1、這個(gè)變量已經(jīng)定義過2、這個(gè)變量是屬于某一種數(shù)據(jù)類型的3、這個(gè)變量在內(nèi)存中占用了若干個(gè)字節(jié)的空間4、這個(gè)變量能表示的數(shù)值范圍中國(guó)礦業(yè)大學(xué)機(jī)電工程學(xué)院-張有忠 版權(quán)所有 2005-12現(xiàn)場(chǎng)總線技術(shù)6262變量說明中國(guó)礦業(yè)大學(xué)機(jī)電工程學(xué)院-張有忠 版權(quán)所有 2005-12現(xiàn)場(chǎng)總線技術(shù)6363變量定義說明n存儲(chǔ)類說明符nauto自動(dòng)存儲(chǔ)類,默認(rèn)的存儲(chǔ)類別,函數(shù)進(jìn)入時(shí)建立,退出時(shí)消失nregister寄存器存儲(chǔ)類,將變量放到CPU的寄存器中ns
44、tatic靜態(tài)存儲(chǔ)類,變量的存儲(chǔ)地址固定,程序生存期間永遠(yuǎn)存在nextern外部存儲(chǔ)類,在另外一個(gè)C語言文件中定義的變量n類型修識(shí)符nconst常量修識(shí)符,表示該被修飾量為常量int const *ptr;/說明指針指向的對(duì)象是常量int * cont ptr;/說明指針本身是常量, 指向的對(duì)象是變量nvolatile易失性修識(shí)符,所說明的變量或指針可以由于多種原因而被修改, 用于防止編譯程序優(yōu)化時(shí)導(dǎo)致不能得到正確的值ndata,idata,pdata,xdata,code,bdata是針對(duì)8051等單片機(jī)的C51語言所 特有的存儲(chǔ)類修識(shí)符(見下頁表)n類型說明符n前面內(nèi)容已經(jīng)作過介紹中國(guó)礦業(yè)
45、大學(xué)機(jī)電工程學(xué)院-張有忠 版權(quán)所有 2005-12現(xiàn)場(chǎng)總線技術(shù)6464變量定義說明 2nC51語言特有的存儲(chǔ)類型中國(guó)礦業(yè)大學(xué)機(jī)電工程學(xué)院-張有忠 版權(quán)所有 2005-12現(xiàn)場(chǎng)總線技術(shù)6565C51特有數(shù)據(jù)類型nC51中除了以下C語言中通用的數(shù)據(jù)類型外:nchar,unsigned char,int,unsigned,unsigned long,long,float,double, typedef別名n針對(duì)MCS-51特有的硬件結(jié)構(gòu),擴(kuò)展了以下數(shù)據(jù)類型:nbit,sfr,sfr16,sbitnbit 位變量n位變量的值可以是1(true),0(false)nbit類型的修識(shí)符nbdata - 位
46、變量定義在128位可位尋址區(qū)ndata或idatanbit類型的數(shù)據(jù)說明nbdata bit first;/正確ndata bit second;/正確nidata bit third;/正確nbit forth; /正確nstatic bit sixth;/正確npdata bit forth;/錯(cuò)誤中國(guó)礦業(yè)大學(xué)機(jī)電工程學(xué)院-張有忠 版權(quán)所有 2005-12現(xiàn)場(chǎng)總線技術(shù)6666C51特有數(shù)據(jù)類型(續(xù)1)n位類型不能說明為指針或數(shù)組nbit *dptr;/錯(cuò)誤nbit b_array;/錯(cuò)誤n位變量可以作為結(jié)構(gòu)或聯(lián)合的成員n位變量可以作為函數(shù)的參數(shù)和返回量n但使用寄存器組修飾的函數(shù)不能用位變量
47、作返回量。因?yàn)榘凑誄51的規(guī)定,位變量放在ACC的進(jìn)位位中返回。用寄存器組修飾的函數(shù)其所用的寄存器組在返回前改變了,寄存器中返回的量是不正確的。n與8051硬件特性操作有關(guān)的位變量必須定位在8051的片內(nèi)寄存器區(qū)(RAM)的可位尋址空間中,使用bdata存儲(chǔ)修飾符說明存儲(chǔ)類型。中國(guó)礦業(yè)大學(xué)機(jī)電工程學(xué)院-張有忠 版權(quán)所有 2005-12現(xiàn)場(chǎng)總線技術(shù)6767C51特有數(shù)據(jù)類型(續(xù)2)n8051的特殊功能寄存器和特殊功能位n8051的21個(gè)特殊功能寄存器在片內(nèi)RAM中有其絕對(duì)地址,8051的芯片說明文件已經(jīng)為他們用于定義標(biāo)識(shí)符起了名字。 C51編譯器要做的是對(duì)這些預(yù)定義標(biāo)識(shí)符予以承認(rèn)并把它們與絕對(duì)地
48、址相聯(lián)系,這是通過包含文件實(shí)現(xiàn)的。nC51中使用sfr, sfr16兩種說明符定義特殊功能寄存器nsfr 特殊功能寄存器預(yù)定義標(biāo)識(shí)符 = 絕對(duì)地址 nsfr16 特殊功能寄存器預(yù)定義標(biāo)識(shí)符 = 絕對(duì)地址n通過標(biāo)識(shí)符說明后:n可以象變量說明一樣,用于定義標(biāo)識(shí)符存取特殊功能寄存器nSfr用來說明按照8位(字節(jié))地址存取的特殊功能寄存器,sfr16說明按照16位存取的特殊功能寄存器n例如:nsfr SCON = 0 x98;/串口控制寄存器地址98Hnsfr TMOD = 0 x89;/定時(shí)器/計(jì)數(shù)器模式控制寄存器地址89Hnsfr T2 = 0 xCC;/定時(shí)器2:T2低8位地址為0 xCC,高8
49、位地址為0 xCDn經(jīng)過定義的特殊功能寄存器,就可以象普通變量一樣用賦值語句進(jìn)行賦值,賦值的結(jié)果是改變對(duì)應(yīng)的特殊功能寄存器的值n如果特殊功能寄存器是端口地址,則讀取時(shí)讀入端口值,賦值時(shí)則是寫端口中國(guó)礦業(yè)大學(xué)機(jī)電工程學(xué)院-張有忠 版權(quán)所有 2005-12現(xiàn)場(chǎng)總線技術(shù)6868C51特有數(shù)據(jù)類型 (續(xù)3)n在8051應(yīng)用中,常常需要單獨(dú)訪問特殊功能寄存器的特定位,可以使用sbit(特殊位)類型來定義可以訪問位尋址對(duì)象的變量n(1)-sbit預(yù)定義SFR位標(biāo)識(shí)符 = 可按位定義的預(yù)定義SFR標(biāo)識(shí)符 常量nsfr PSW = 0 xD0;/定義PSW寄存器的地址為0 xD0nsbit OV = PSW
50、2;/定義OV位為PSW.2,地址為0 xD2n“” 號(hào)前是已經(jīng)定義好的SFR名字, “” 號(hào)后面的數(shù)值定義特殊位在寄存器上的位置,取值為07n(2)-sbit預(yù)定義SFR為標(biāo)識(shí)符 = 可按位尋址的SFR絕對(duì)地址 常量nsbit OV = 0 xD0 2;/OV的地址為0 xD2nsbit CY = 0 xD0 7;/CY的地址為0 xD7n其中, “” 號(hào)前面作為基地址的常數(shù)值必須是位于內(nèi)部RAM 0 x800 xFF之間的特殊功能寄存器的地址,這些地址都能被8整除, “” 號(hào)后面的數(shù)值定義特殊位在寄存器上的位置,取值為07n(3)-sbit預(yù)定義SFR為標(biāo)識(shí)符 = SFR位的絕對(duì)地址nsb
51、it OV = 0 xD2;nsbit CY = 0 xD7;n這種方式將特功能寄存器可位訪問位的絕對(duì)地址直接賦值給標(biāo)識(shí)符,地址的常數(shù)值必須是位于0 x800 xFFn經(jīng)過位變量定義的標(biāo)識(shí)符可以像普通變量一樣進(jìn)行存取訪問中國(guó)礦業(yè)大學(xué)機(jī)電工程學(xué)院-張有忠 版權(quán)所有 2005-12現(xiàn)場(chǎng)總線技術(shù)6969C51特有數(shù)據(jù)類型(續(xù)4)nsbit說明符還可以用在bdata修飾的RAM空間定義位變量n(1)-直接用bit說明符說明位變量(前文內(nèi)容)n(2)-先說明為bdata存儲(chǔ)空間的char變量或int變量,在進(jìn)一步用sbit將char或int變量中特定位說明為位變量(采用 “ ”符號(hào))nbdata int
52、 ivar;nsbit ivarbit10 = ivar 10;n/位變量ivarbit10是整型變量ivar的從低位(0位)起的第10位nbdata char myarray 3 ;nsbit myarray2_1 = myarray 2 1;nsbit myarray0_0 = myarray 0 0;n/位變量myarray2_1是字符型數(shù)組的第 2 個(gè)元素的從低位起的第 1 位n/位變量myarray0_0是字符型數(shù)組的第 0 個(gè)元素從低位起的第 0 位中國(guó)礦業(yè)大學(xué)機(jī)電工程學(xué)院-張有忠 版權(quán)所有 2005-12現(xiàn)場(chǎng)總線技術(shù)7070變量賦值n變量賦初值就是在定義變量的同時(shí),給變量賦一個(gè)值
53、nint x=3; /*定義一個(gè)整型變量x,它的初值是3*/nfloat y=4.5; /*定義一個(gè)實(shí)型變量y,它的初值是4.5*/ nchar z=a; /*定義一個(gè)字符型變量z,它的初值是小寫字母a*/ nint x,y,z=3; /*x, y沒有賦值,z=3*/n/*另外的形式*/nint a,b,c;na=b=c=3;注意:定義變量時(shí)不允許使用這種連續(xù)賦值的方式中國(guó)礦業(yè)大學(xué)機(jī)電工程學(xué)院-張有忠 版權(quán)所有 2005-12現(xiàn)場(chǎng)總線技術(shù)7171C運(yùn)算符n算術(shù)運(yùn)算符n用于各類數(shù)值運(yùn)算。包括加(+)、減(-)、乘(*)、除(/)、求余(或稱模運(yùn)算,%)、自增(+)、自減(-)共七種n關(guān)系運(yùn)算符n
54、用于比較運(yùn)算。包括大于()、小于(=)、小于等于(=)和不等于(!=)六種n邏輯運(yùn)算符n用于邏輯運(yùn)算。包括與(&)、或(|)、非(!)三種n位操作運(yùn)算符n參與運(yùn)算的量,按二進(jìn)制位進(jìn)行運(yùn)算。包括位與(&)、位或(|)、位非()、位異或()、左移()六種n條件運(yùn)算符n這是一個(gè)三目運(yùn)算符,用于條件求值( ? : )n賦值運(yùn)算符n用于賦值運(yùn)算,分為簡(jiǎn)單賦值(=)、復(fù)合算術(shù)賦值(+=,-=,*=,/=,%=)和復(fù)合位運(yùn)算賦值(&=,|=,=,=,=)三類共十一種n逗號(hào)運(yùn)算符n用于把若干表達(dá)式組合成一個(gè)表達(dá)式(,)n指針運(yùn)算符n用于取內(nèi)容(*)和取地址(&)二種運(yùn)算 n求字
55、節(jié)數(shù)運(yùn)算符n用于計(jì)算數(shù)據(jù)類型所占的字節(jié)數(shù)(sizeof)n特殊運(yùn)算符n有括號(hào)(),下標(biāo),成員(,.)等幾種中國(guó)礦業(yè)大學(xué)機(jī)電工程學(xué)院-張有忠 版權(quán)所有 2005-12現(xiàn)場(chǎng)總線技術(shù)7272C運(yùn)算符及其特性中國(guó)礦業(yè)大學(xué)機(jī)電工程學(xué)院-張有忠 版權(quán)所有 2005-12現(xiàn)場(chǎng)總線技術(shù)7373C運(yùn)算符及其特性 2中國(guó)礦業(yè)大學(xué)機(jī)電工程學(xué)院-張有忠 版權(quán)所有 2005-12現(xiàn)場(chǎng)總線技術(shù)7474運(yùn)算符和表達(dá)式n基本的算術(shù)運(yùn)算符基本的算術(shù)運(yùn)算符n加法運(yùn)算符“+”:a+b, 4+8n減法運(yùn)算符“-”:a-b, -x,-5n乘法運(yùn)算符“*”:a*b, 3*5n除法運(yùn)算符“/”:a/b, 3/5n求余運(yùn)算符(模運(yùn)算符)“%
56、”: 5%3=2n算術(shù)表達(dá)式算術(shù)表達(dá)式n用算術(shù)運(yùn)算符和括號(hào)將運(yùn)算對(duì)象(也稱操作數(shù))連接起來的、符合C語法規(guī)則的式子n以下是算術(shù)表達(dá)式的例子na+bn(a*2)cn(x+r)*8-(a+b)7n+Insin(x)+sin(y)n(+i)-(j+)+(k-)中國(guó)礦業(yè)大學(xué)機(jī)電工程學(xué)院-張有忠 版權(quán)所有 2005-12現(xiàn)場(chǎng)總線技術(shù)7575運(yùn)算符和表達(dá)式 2n運(yùn)算符的優(yōu)先級(jí)運(yùn)算符的優(yōu)先級(jí)nC語言中,運(yùn)算符的運(yùn)算優(yōu)先級(jí)共分為15級(jí)。15級(jí)最高,1級(jí)最低n運(yùn)算符的結(jié)合性運(yùn)算符的結(jié)合性nC語言中各運(yùn)算符的結(jié)合性分為兩種,即左結(jié)合性(自左至右)和右結(jié)合性(自右至左)n例如算術(shù)運(yùn)算符的結(jié)合性是自左至右,即先左后右
57、如有表達(dá)式x-y+z則y應(yīng)先與“-”號(hào)結(jié)合,執(zhí)行x-y運(yùn)算,然后再執(zhí)行+z的運(yùn)算。這種自左至右的結(jié)合方向就稱為“左結(jié)合性”n而自右至左的結(jié)合方向稱為“右結(jié)合性”如x=y=z,由于“=”的右結(jié)合性,應(yīng)先執(zhí)行y=z再執(zhí)行x=(y=z)運(yùn)算語言運(yùn)算符中有不少為右結(jié)合性,應(yīng)注意區(qū)別,以避免理解錯(cuò)誤 中國(guó)礦業(yè)大學(xué)機(jī)電工程學(xué)院-張有忠 版權(quán)所有 2005-12現(xiàn)場(chǎng)總線技術(shù)7676運(yùn)算符和表達(dá)式 3n自增、自減運(yùn)算符自增、自減運(yùn)算符n自增,自減運(yùn)算符:自增1運(yùn)算符記為“+”,其功能是使變量的值自增1n自減1運(yùn)算符記為“-”,其功能是使變量值自減1n+i i自增1后再參與其它運(yùn)算n-i i自減1后再參與其它運(yùn)
58、算ni+ i參與運(yùn)算后,i的值再自增1ni- i參與運(yùn)算后,i的值再自減1中國(guó)礦業(yè)大學(xué)機(jī)電工程學(xué)院-張有忠 版權(quán)所有 2005-12現(xiàn)場(chǎng)總線技術(shù)7777運(yùn)算符和表達(dá)式 4n賦值運(yùn)算符賦值運(yùn)算符n簡(jiǎn)單賦值運(yùn)算符和表達(dá)式n變量=表達(dá)式n例如:nx=a+bnw=sin(a)+sin(b)ny=i+-jn在其它高級(jí)語言中,賦值構(gòu)成了一個(gè)語句,稱為賦值語句。 而在C中,把“=”定義為運(yùn)算符,從而組成賦值表達(dá)式。凡是表達(dá)式可以出現(xiàn)的地方均可出現(xiàn)賦值表達(dá)式。n例如,式子:nx=(a=5)+(b=8)n在語言中也可以組成賦值語句,按照語言規(guī)定,任何表達(dá)式在其未尾加上分號(hào)就構(gòu)成為語句。因此如nx=8; a=b=
59、c=5;都是賦值語句,在前面各例中我們已大量使用過了 中國(guó)礦業(yè)大學(xué)機(jī)電工程學(xué)院-張有忠 版權(quán)所有 2005-12現(xiàn)場(chǎng)總線技術(shù)7878運(yùn)算符和表達(dá)式 5n類型轉(zhuǎn)換類型轉(zhuǎn)換n如果賦值運(yùn)算符兩邊的數(shù)據(jù)類型不相同,系統(tǒng)將自動(dòng)進(jìn)行類型轉(zhuǎn)換,即把賦值號(hào)右邊的類型換成左邊的類型。具體規(guī)定如下:n實(shí)型賦予整型,舍去小數(shù)部分n整型賦予實(shí)型,數(shù)值不變,但將以浮點(diǎn)形式存放,即增加小數(shù)部分(小數(shù)部分的值為0)n字符型賦予整型,由于字符型為一個(gè)字節(jié),而整型為二個(gè)字節(jié),故將字符的ASCII碼值放到整型量的低八位中,高八位為0n整型賦予字符型,只把低八位賦予字符量中國(guó)礦業(yè)大學(xué)機(jī)電工程學(xué)院-張有忠 版權(quán)所有 2005-12現(xiàn)
60、場(chǎng)總線技術(shù)7979運(yùn)算符和表達(dá)式 6n復(fù)合的賦值運(yùn)算符復(fù)合的賦值運(yùn)算符n在賦值符“=”之前加上其它二目運(yùn)算符可構(gòu)成復(fù)合賦值符n如+=,-=,*=,=,%=,=,&=,=,|=。 n構(gòu)成復(fù)合賦值表達(dá)式的一般形式為:n變量 雙目運(yùn)算符=表達(dá)式n它等效于n變量=變量 運(yùn)算符 表達(dá)式n例如:n a+=5 等價(jià)于a=a+5n x*=y+7 等價(jià)于x=x*(y+7)n r%=p 等價(jià)于r=r%p中國(guó)礦業(yè)大學(xué)機(jī)電工程學(xué)院-張有忠 版權(quán)所有 2005-12現(xiàn)場(chǎng)總線技術(shù)8080C51中的字位運(yùn)算nC51中共有6種字位運(yùn)算符,按優(yōu)先級(jí)分類:n:按位取反 /對(duì)一個(gè)二進(jìn)制數(shù)按位取反,0變1,1變0n:左移位 將左側(cè)操作數(shù)按照右側(cè)操作數(shù)指示的位數(shù)向左移位 運(yùn)算規(guī)則: 先將左側(cè)操作數(shù)化為int型,再進(jìn)行左移位,移
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 幼兒園工作總結(jié)童年記憶永不磨滅
- 健康會(huì)所前臺(tái)工作感受
- 水處理行業(yè)助理工作總結(jié)
- 文化娛樂行業(yè)員工績(jī)效考核實(shí)踐
- 2023-2024學(xué)年浙江省杭州四中高三(下)第一次訓(xùn)練地理試卷
- 2021年江蘇省宿遷市公開招聘警務(wù)輔助人員輔警筆試自考題2卷含答案
- 2021年廣東省韶關(guān)市公開招聘警務(wù)輔助人員輔警筆試自考題2卷含答案
- 2024年安徽省合肥市公開招聘警務(wù)輔助人員輔警筆試自考題1卷含答案
- 2021年江西省鷹潭市公開招聘警務(wù)輔助人員輔警筆試自考題1卷含答案
- 《心理學(xué)與讀心術(shù)》課件
- 2025年林權(quán)抵押合同范本
- 2024年北師大版四年級(jí)數(shù)學(xué)上學(xué)期學(xué)業(yè)水平測(cè)試 期末卷(含答案)
- 智能檢測(cè)與監(jiān)測(cè)技術(shù)-智能建造技術(shù)專02課件講解
- 2025蛇年一年級(jí)寒假作業(yè)創(chuàng)意與寓意齊【高清可打印】
- 多系統(tǒng)萎縮鑒別及治療
- 設(shè)備的使用和維護(hù)管理制度模版(3篇)
- 浙江省寧波市慈溪市2023-2024學(xué)年高三上學(xué)期語文期末測(cè)試試卷
- 草學(xué)類專業(yè)生涯發(fā)展展示
- 2024年廣東省公務(wù)員錄用考試《行測(cè)》真題及解析
- 輔導(dǎo)員年度述職報(bào)告
- 麻風(fēng)病防治知識(shí)課件
評(píng)論
0/150
提交評(píng)論