導航:首頁 > 操作系統 > 單片機模塊化

單片機模塊化

發布時間:2022-04-21 18:47:23

1. 如何寫在keil中寫單片機的模塊化的程序

首先要會編寫滿足使用要求的程序,在此基礎上,把一些功能獨立的子程序單獨編成一個源文件,這些源文件里的子程序一旦試驗成功,以後就不需修改,也不需復制粘貼,只管整體添加即,源文件可能工巧匠比較長,為便於查找,可編一個頭文件將這些子程序聲明一下,然後在主程序包含這個頭文件即可,如液晶屏1602的驅動函數,寫命令 寫數據 初始化函數 甚至再編寫一些常用的字元串顯示函數,整型數據顯示函數,都有可以單獨作為一個源文件 還有EEPROM操作的相關函數,跟其它部分聯系較少,也可以單獨編成源文件, 子程序比較少的源文件可以直接引用,為便於查找,子程序多的模塊都有要有頭文件和該源文件對應,以下是我封裝的STC單片機內部的EEPROM操作的頭文件和源文件,跟其它部分就沒什麼聯系,因此作為一個獨立模塊 頭文件eeprom.h如下:
ifndef __EEPROM_H__
#define __EEPROM_H__
#define uchar unsigned char
#define uint unsigned int
//擦除片內EEPROM的一個扇區 這些函數在此只是聲明一下,實體在源文件中
void eepromEraseSector (uint address);
void eepromWrite(uint address, uchar write_data);
//讀取STC單片機內部EEPROM的一個位元組
uchar eepromRead(uint address);
#endif

源文件eeprom.c 如下,裡面的幾個子函數都是STC單片機說明文檔里有的,不需要任何修改,只管調用,所以平時我們只看頭文件就行了
#include<STC12C54.H>
#define uchar unsigned char
#define uint unsigned int

//擦除片內EEPROM的一個扇區
void eepromEraseSector (uint address)
{
uchar ii;
ISP_ADDRL=address;
ISP_ADDRH=address>>8;
ISP_CONTR=0x01;
ISP_CONTR=ISP_CONTR|0x82; // 0x80 if SYSCLK<40MHz, 0x81 if SYSCLK<20MHz, 0x82 if SYSCLK<10MHz, 0x83 if SYSCLK<5MHz
ISP_CMD=0x03;
ISP_TRIG=0x46;
ISP_TRIG=0xb9;
for(ii=0;ii<3;ii++);
ISP_ADDRL=0xff;
ISP_ADDRH=0xff;
ISP_CONTR=0x00;
ISP_CMD=0x00;
ISP_TRIG=0x00;
}
//對STC片內EEPROM的指定地址寫入數據(即,位元組編程
void eepromWrite(uint address, uchar write_data)
{
uchar ii;
ISP_DATA=write_data;
ISP_ADDRL=address;
ISP_ADDRH=address>>8;
ISP_CONTR=0x01;
ISP_CONTR=ISP_CONTR|0x82; // 0x80 if SYSCLK<40MHz, 0x81 if SYSCLK<20MHz, 0x82 if SYSCLK<10MHz, 0x83 if SYSCLK<5MHz
ISP_CMD=0x02;
ISP_TRIG=0x46;
ISP_TRIG=0xb9;
for(ii=0;ii<3;ii++);
ISP_ADDRL=0xff;
ISP_ADDRH=0xff;
ISP_CONTR=0x00;
ISP_CMD=0x00;
ISP_TRIG=0x00;
}
//讀取STC單片機內部EEPROM的一個位元組
uchar eepromRead(uint address)
{
uchar ii,z;
ISP_ADDRL=address;
ISP_ADDRH=address>>8;
//ISP_CONTR=0x01;
ISP_CONTR=ISP_CONTR|0x82; // 0x80 if SYS
ISP_CMD=0x01;//讀命令切記哦
ISP_TRIG=0x46;
ISP_TRIG=0xb9;
for(ii=0;ii<3;ii++);
ISP_ADDRL=0xff;
ISP_ADDRH=0xff;
ISP_CONTR=0x00;
ISP_CMD=0x00;
ISP_TRIG=0x00;
z=ISP_DATA;
return(z);
}

2. 單片機設計技巧:如何實現8051模塊化編程

最佳答案第一階段:是先瀏覽教科書里的硬體部分,大至了解單片機的硬體結構。如ROM、RAM、地址、I/O口等,以及看一些廠家的MCU資料(Data Sheet),來加強MCU所提供各項資源的印象。呵呵,還是得先看書。看不懂的就問老師,問知道的人。可以理解,我以前在學校也是對單片機一點兒也不理解,其實簡單點的說單片機就是一塊集成晶元,但是不同的地方就是可以通過編程來改變其引腳的電平高低。大二學了數電沒有?學過數點你就會理解高低電平的含義。另外,大一的時候學過計算機基礎了吧。你可以用計算機的原理來理解單片機。比如說 ROM 其實就像計算機的硬碟一樣,是用來裝東西的,裝你運行的程序。

第二階段:就是了解二進位數字、十六進位數和軟體方面的內容。盡管有很多高級語言可用於單片機的編程,但我覺得初學還是以匯編語言為好,更有利於和硬體結合,掌握硬體結構。知道匯編語言、機器語言、指令、 程序等概念後,從MOV指令開始,學習匯編語言和編程,在此如51的MCU匯編語言系統有11條指令,簡單又好理解它們怎樣和硬體聯系,更有助於一般學習單片機的指令整合與運用.因此其方法可先了 解幾條基本的MOV指令和它的機器語言,大致建立起單片機的硬體和軟體概念,來知道單片機的硬體是由指令控制指揮的。

第三階段按照編程環境的使用手冊,熟悉使用編程環境。現在的編程環境一般都和電腦相連,只要具備基本電腦知識的人都可很快掌握操作步驟。

第四階段是依靠實驗板,學習掌握單片機的匯編語言指令系統和簡單編程。同時和前面所學硬體知識結合組裝,起到主學軟體,鞏固硬體的雙重作用。

開始 時可用別人編的簡單程式在實驗板上進行驗證、分析,主要是熟悉該學習方法,在應用方面主要針對單片機I/O各項介面的使用,如A/D,D/A,PWM輸出的應用,LCD與VFD的控制,以及如何規范各項串列輸出入口的通訊協定等,對其所控制的各項元器件須先分析驅動能力,如電流電壓問題等。

匯編語言熟悉後,建議盡快學習C語言的編程,畢竟C語言有功能豐富的庫函數、運算速度快、編譯效率高、有良好的可移植性,而且可以直接實現對系統硬體的控制。C語言是一種結構化程序設計語言,它支持當前程序設計中廣泛採用的由頂向下結構化程序設計技術。此外,C語言程序具有完善的模塊程序結構,從而為軟體開發中採用模塊化 程序設計方法提供了有力的保障。因此,使用C語言進行程序設計已成為軟體 開發的一個主流。用C語言來編寫目標系統軟體,會大大縮短開發周期,且明顯地增加軟體的可讀性,便於改進和擴充,從而研製出規模更大、性能更完備的系統。

另外,我覺得一開始很多的概念可能你都不怎麼理解的,光看書也難理解,還得多問人,還有找一樣好的模擬軟體,一定要會用。在學指令的時候一條一條的驗證,那樣才會理解。
就比如一個非常簡單的 REG 0000H
AJMP 30H
MOV 20H #05H
END
看看模擬軟體的寄存器,內部數據存儲器裡面的數據有什麼改變。當你看到20H單元上的值變成了5,你就知道 MOV 20H #05H 的含義。但是光看書,可能就理解不出來。

3. 關於單片機 模塊化編程的 問題

可以,但是加了頭文件有幾點好處:首先模塊化更清晰;通過頭文件申明需要對外提供調用的函數,比你在其他C文件裡面用extern 申明要方便。舉個例子,現在有main.c,a.c,b.c三個C文件,當你在main.c需要用到的a.c里的函數,且函數很多,好幾十個,你需要在main.c寫好幾十個extern申明的函數語句。如果你還需要在b.c調用的話,還要在b.c裡面寫幾十個申明語句。當你還需要在其他C文件裡面調用的話,那工作量就太大了。如果我們寫個h文件,然後在裡面去extern申明需要對外提供的函數,其他C文件裡面調用只需要寫個#include "a.h"即可,方便且快捷。

4. 我單片機模塊化編程出現的問題

首先,我不知道,你的.h文件裡面的內容是什麼,因該是:外部函數引用的語句,比如:
extern void XXX(unsigned int XXX); 這樣才能對外部函數進行引用。
其次,我看你的每一個.C文件中都有#include<reg52.h>語句,這是不對的,編譯都會出錯,
你可以用#ifndef 和#endif進行編譯預處理,這樣可以防止出錯。
注意以上兩點就應該沒有什麼錯誤了。

5. 用單片機C語言模塊化設計,使用全局變數太多,data不夠用怎麼辦

首先,你用的什麼單片機?
現在的很多單片機,已經集成了外部RAM,沒有必要你自己再擴RAM了,你查一下你使用的單片機手冊,應該已經外擴RAM了。
據我所知道的51系列單片機,STC的最少外擴256B,通常外擴1024B,現在又出來外擴4096B的
中穎的、華幫的,最少也是一樣256B- 1024B。
但是有一種例外,就是AT89S51,只有這種原始的單片機才沒有外擴RAM。
從AT89S52時候,就開始外擴256B了。
你可以查一下你的手冊,也可以在Keil里,新建工程選擇晶元時,看一下晶元的介紹。

6. 求大神關於51單片機模塊化編程問題

你好:
你只要在iic的.
c文件
中包含iic的.h文件就可以了。
另,如果iic的.c文件涉及操作到51中的寄存器,還要包含reg51.h。
且,.c和.h文件都要放到
編譯器
所在文件的include下。
先試試吧。
希望我的回答能幫助到你。

7. 單片機是什麼

單片機是一種集成電路晶元。

單片機是採用超大規模集成電路技術把具有數據處理能力的中央處理器CPU、隨機存儲器RAM、只讀存儲器ROM、多種I/O口和中斷系統、定時器/計數器等功能集成到一塊矽片上構成的一個小而完善的微型計算機系統。

在工業控制領域廣泛應用。從上世紀80年代,由當時的4位、8位單片機,發展到如今的300M的高速單片機。

單片機的特徵:

1、單片機的體積比較小, 內部晶元作為計算機系統,其結構簡單,但是功能完善,使用起來十分方便,可以模塊化應用。

2、單片機有著較高的集成度,可靠性比較強,即使單片機處於長時間的工作也不會存在故障問題。

3、單片機在應用時低電壓、低能耗,是人們在日常生活中的首要選擇, 為生產與研發提供便利。

4、單片機對數據的處理能力和運算能力較強,可以在各種環境中應用,且有著較強的控制能力。

8. 單片機C程序模塊化的寫法,用sbit定義位變數的時候寫在寫哪個位置全局變數寫在哪局部變數寫在哪

這個應該根據程序的情況來定,你只有一個源文件的話,當然寫在C里就可以了。全局變數一般寫在程序的最前面,局部變數寫在每個函數里。比如這個例子:
#include <stdio.h>
#include <math.h>
#include <intrins.h>
#include <absacc.h>
#include <string.h>
#include "LCD_12864.h"
sbit RESET = P3^3;
uchar code LCD_WIDTH = 16;
uchar code LCD_HEIGHT = 64;
uchar gCurRow,gCurCol;
uchar tCurRow,tCurCol;
uchar ShowModeSW;
uint txthome,grhome;
uchar Status_BIT_01();
uchar Status_BIT_3();
uchar LCD_Write_Command(uchar cmd);
uchar LCD_Write_Command_P1(uchar cmd,uchar para1);
uchar LCD_Write_Command_P2(uchar cmd,uchar para1,uchar para2);
uchar LCD_Write_Data(uchar dat);
void cls();
uchar LCD_Initialise();
void Set_LCD_POS(uchar row,uchar col);
uchar Status_BIT_01()
{
uchar i;
for(i=5;i>0;i--)
{
if((LCMCW & 0x03)==0x03)
break;
}
return i;
}
uchar Status_BIT_3()
{
uchar i;
for(i=5;i>0;i--)
{

9. 單片機c語言模塊化編程,如何定義全局變數。

1.使用關鍵字extern修飾申明。
例如:
主文件中定義 int g_ival = 0;
別的文件裡面用 extern int g_ival;申明一下就可以用了。

2.模塊化編程是指將一個龐大的程序劃分為若干個功能獨立的模塊,對各個模塊進行獨立開發,然後再將這些模塊統一合並為一個完整的程序。這是C語言面向過程的編程方法,可以縮短開發周期,提高程序的可讀性和可維護性。

3.在單片機程序里,程序比較小或者功能比較簡單的時候,我們不需要採用模塊化編程,但是,當程序功能復雜、涉及的資源較多的時候,模塊化編程就能體現它的優越性了。如前面我們寫過的HT1380驅動程序、獨立按鍵掃描程序和12864程序,每一個程序都是只用一個源文件編寫就能完成,但是,當您製作一個12864液晶日歷的時候,需要用到HT1380驅動程序、獨立按鍵掃描程序和12864顯示程序,如果把這三個程序全部集中在一個源文件里,將導致主體程序臃腫且雜亂,這樣做並非不可取,只是降低了程序可讀性、可維護性和代碼的重用率。如果把這三個程序當做三個獨立的模塊放到你的主體工程進行模塊化編程,效果就不一樣了。實際上,模塊化編程就是模塊合並的過程,就是建立每個模塊的頭文件和源文件並將其加入到主體程序的過程。主體程序調用模塊的函數是通過包含模塊的頭文件來實現,模塊的頭文件和源文件是模塊密不可分的兩個部分,缺一不可。所以,模塊化編程必須提供每個模塊的頭文件和源文件。

閱讀全文

與單片機模塊化相關的資料

熱點內容
同態加密gpu 瀏覽:216
程序員告訴你網賭為什麼贏不了 瀏覽:971
程序員最帥操作 瀏覽:72
雲伺服器可以隨時更換嗎 瀏覽:489
老款車在哪裡可以買到app 瀏覽:460
程序員事業單位 瀏覽:68
特來電需要用哪個App 瀏覽:881
電腦如何共享其他伺服器 瀏覽:260
php網站性能優化 瀏覽:354
被子收納袋壓縮真空 瀏覽:30
h1z1選什麼伺服器 瀏覽:484
蘋果版三國殺怎麼在安卓上下載 瀏覽:728
安潤國際app在哪裡下載 瀏覽:438
iospdf教程下載 瀏覽:332
加密貨幣換手率300表示什麼 瀏覽:727
手機wps新建文件夾存照片 瀏覽:399
單片機rgbled 瀏覽:963
怎麼通過文件加密後發給微信好友 瀏覽:90
用虛擬機編程 瀏覽:821
公司代理伺服器有什麼要求 瀏覽:244