8 2019 8051微控制器開發工具DIY

2023-01-05 04:36:06 字數 4296 閱讀 3348

8.(1968)《8051微控制器開發工具diy》

vb程式設計詳細說明如下:

1, . 為了使用方便,我們分別寫乙個方便易記的輸入函式及輸出子程式,並且由於在很多情況下都要用到延時指令,所以我們也要寫乙個延時子程式(延時子程式呼叫winapi,有關方面的內容請讀者參閱msdn,此處不進行詳細介紹)。

首先在「我的文件」內新建乙個名為mcs51的資料夾,將及拷貝到mcs51資料夾。啟動vb6,新建一標準exe工程。

將工程儲存在mcs51資料夾中,檔名為在「工程」選單中單擊「新增模組」將新增到mcs51工程中。把模組中與本例無關的函式宣告刪除,增添延時子程式及輸入輸出處理**。完成後的**如下:

option explicit

dim result as boolean

dim portval as long

declare function getportval lib "" (byval portaddr as integer, byref portval as long, byval bsize as byte) as boolean

declare function setportval lib "" (byval portaddr as integer, byval portval as long, byval bsize as byte) as boolean

declare function initializewinio lib "" () as boolean

declare function shutdownwinio lib "" () as boolean

public declare function gettickcount lib "kernel32" () as long

'延時 tt ms 子程式

sub timedelay(tt as long)

dim t as long

t = gettickcount()

dodoevents

if gettickcount - t < 0 then t = gettickcount

loop until gettickcount - t >= tt

end sub

'將dataout 輸出到位址為address的埠子程式

public sub dio_outputbyte(byval address as integer, byval dataout as integer)

portval = dataout

result = setportval(address, portval, 1)

end sub

'返回位址為address 的埠的值

public function dio_inputbyte(byval address as integer) as integer

result = getportval(address, portval, 1)

dio_inputbyte = portval

end function

2, 在窗體上放置控制項並設定控制項的相關屬性如下圖及表所示:

3, 首先編寫程式起動及退出的相關**,起動時將timer1關閉,在text1及text2中顯示相關提示資訊,並加入允許埠操作命令,退出時發出關閉埠操作命令。雙擊窗體空白處,在出現的**窗中輸入如下**:

private sub form_load()

if initializewinio = false then

msgbox "錯誤,無法開啟埠!"

endend if

= false

= "*.hex"

= "請選擇目標檔案!"

beep

end sub

雙擊「退出「按鈕,在出現的**窗中輸入如下**:

private sub exit_click()

call shutdownwinio

endend sub

另外,為了使用方便,在**窗的「通用」區定義列印埠基位址常數及定義乙個存貯檔案更新時間的變數;由於每個人的計算機配置不一樣,對於快速的計算機可能需要延時同步,所以設定乙個delay延時常數。具體**如下:

const ptraddress = &h378 『此數值應根據機器的實際值填寫

const delay = 2』當你的機器太快時加大此數值

dim file_date 『用於存貯檔案更新時間

4, 接下來我們要建立乙個最基本的子程式,即位元組輸出子程式:

形式:outbyte(data as integer)

功能:將一位元組資料寫入指定的微控制器程式存貯器位址中,高位在前

入口:位元組資料data

private sub outbyte(data as integer) '輸出位元組

dim delay as integer

dim i as integer

for con = 7 to 0 step -1

dio_outputbyte ptraddress, 2 ^ 7 '輸出時鐘低電平,rst高

for i = 1 to delay 『延時

next i

if (data and 2 ^ con) = 2 ^ con then '如果資料位為1則輸出1

dio_outputbyte ptraddress, (2 ^ 7 + 2 ^ 5)

for i = 1 to delay

next i

dio_outputbyte ptraddress, (2 ^ 7 + 2 ^ 5 + 2 ^ 4) '輸出時鐘高電平

for i = 1 to delay

next i

dio_outputbyte ptraddress, (2 ^ 7 + 2 ^ 5) '輸出時鐘低電平

else

dio_outputbyte ptraddress, 2 ^ 7 '如果資料位為0則輸出0

for i = 1 to delay

next i

dio_outputbyte ptraddress, (2 ^ 7 + 2 ^ 4) '輸出時鐘高電平

for i = 1 to delay

next i

dio_outputbyte ptraddress, 2 ^ 7 '輸出時鐘低電平

end if

for i = 1 to delay

next i

next con

end sub

5, 根據位元組輸出子程式構建程式存貯器位元組寫入子程式

形式:w_c_b(codeaddress as integer, codedata as integer)

功能:將資料codedata寫入微控制器程式存貯器codeaddress位址

入口:codeaddress-程式存貯器位址

codedata-資料

《此子程式相容了at89s53晶元的寫入》

private sub w_c_b(codeaddress as integer, codedata as integer) '寫**位元組

outbyte (((codeaddress and &hff00) / (2 ^ 8) * 8) and &hf8 or 2 or ((codeaddress and &h2000) / (2 ^ 11))) '合併命令與高位址位元組

outbyte (codeaddress and &hff)

outbyte codedata

end sub

6, 構建讀微控制器程式存貯器資料函式

形式:r_c(codeaddress as integer) as integer

功能:返回微控制器存器貯器位址codeaddress處的資料

入口:codeaddress-程式存貯器位址

出口:r_c返回值

private function r_c(codeaddress as integer) as integer '讀**位元組

dim i as integer

dim con1 as integer

dim x as integer

x = 0

outbyte (((codeaddress and &hff00) / (2 ^ 8) * 8) and &hf8 or 1 or ((codeaddress and &h2000) / (2 ^ 11))) '合併命令與高位址位元組

outbyte (codeaddress and &hff)

for con1 = 7 to 0 step -1

dio_outputbyte ptraddress, 2 ^ 7 '輸出時鐘低電平,rst高

for i = 1 to delay

next i

微控制器開發板使用必讀

1 先把光碟內容複製到電腦硬碟再學習,否則有可能刮花讀不出來的情況。3 程式前要先給 模組安裝pl2303驅動 資料裡面的第5個檔案 按照說明書 資料裡面的第1個檔案 操作完成就可以 程式了。要先裝驅動,裝完後在插usb線,xp系統需要重新啟動電腦,win7系統需要右擊埠,再點通過網路更新。5 蜂鳴...

2023年廣工微控制器試卷

名姓線 號學 訂 業專裝 院學 廣東工業大學考試試卷 a 課程名稱 微控制器原理與接 術試卷滿分100分考試時間 2015年6月19日 第16周星期五 題號一二三四五六七 十總分 評卷得分 評卷簽名 複核得分複核簽名 一 選擇題 每題2分,共50分 1 乙個十進位制bcd碼00010101b,表示的...

微控制器實習

第四次實習 樓道照明燈 一 實習題目 樓道照明燈 二 實習目的 綜合實驗,掌握80c51微控制器的程式設計除錯方法。三 實習內容 實現樓道間照明燈的方便控制,乙個照明燈,在樓上和樓下各有乙個 閉合式 開關控制。開關的閉合並不直接決定燈的亮滅,而開關狀態的改變才是決定燈亮滅的關鍵。即不管兩個開關當前的...