數字IO例項應用

2023-01-07 05:30:07 字數 3763 閱讀 9169

5.5 數字i/o應用例項

5.5.1 使用數字i/o查詢輸入訊號

通常可以配置數字i/o位輸入或輸出,以便於外設進行資訊交換。本例項為使用i/o埠進行查詢外界訊號輸入情況,硬體介面如圖5-2所示。外界輸入訊號需要加光耦隔離,以便可以獲得符合tms320lf2407a 要求的訊號,並且可以提高系統的抗干擾性。

在此使用了pwm3/iopb0、pwm4/iopb1、pwm5/iopb2、和pwm6/iopb3。

圖5-2 光耦隔離輸入訊號介面

在i/o初始化時,需要設定引腳為i/o功能,而且還需要選擇訊號方向,下面為讀取輸入訊號的例項程式。

* 檔名: *

.include "變數和暫存器定義

.include 向量表定義,請參考2.2節和附錄1

;b2塊的變數定義

.bss indata,1i/o輸入值判斷變數

.bss gpr0,1通用目標暫存器

;主**

.text

nopstart:

splk #000eh,imr ;遮蔽除int2,int3和int4以外的其他中斷

lacc ifr讀中斷標誌

sacl ifr清楚中斷標誌

clrc cnf配置塊b0到資料儲存空間

ldp00e0h資料頁指向7000h-707fh

splk #06fh,wdcr ;如果vccp=5v,則禁止看門狗

ldpscsr1>>7

splk #0000,scsr1

ldp00e1h資料頁指向7080h-70ffh

splk #0f00h,mcra ;配置i/o,選擇iopb0、iopb1、iopb2、iopb3

splk #0000h,pbdatdir ;配置為輸入模式

ldp0

splk #0h,gpr0為程式空間設定等待狀態發生器,0~7個等待狀態

out gpr0,wsgr

kick_dog復位看門狗

clrc intm使能dsp中斷

st_loop1

ldp00e1h

lacc pbdatdir

ldpindata

sacl indata

bitindata,bit0 ;判斷iopb0是否有輸入訊號,如有則跳到st_loop2

b*** st_loop2, tc

bst_loop1

st_loop2

ldp00e1h

lacc pbdatdir

ldpindata

sacl indata

bitindata,bit1 ;判斷iopb1是否有輸入訊號,如有則跳到st_loop3

b*** st_loop3, tc

bst_loop2

st_loop3

ldp00e1h

lacc pbdatdir

ldpindata

sacl indata

bitindata,bit2 ;判斷iopb2是否有輸入訊號,如有則跳到st_loop3

b*** st_loop4, tc

bst_loop3

st_loop4

ldp00e1h

lacc pbdatdir

ldpindata

sacl indata

bitindata,bit3 ;判斷iopb3是否有輸入訊號,如有則跳到main

b*** main, tc

b st_loop4

main:

nopb main

.end

5.5.2 使用數字i/o輸出訊號

本例項為使用i/o埠輸出4個訊號,這4個訊號分別連線到4個led,硬體介面如圖5-3所示,輸出引腳和led之間需要使用一片觸發器sn74hct273,以實現對led的驅動。在此例項使用了pwm3/iopb0、pwm4/iopb1、pwm5/iopb2和pwm6/iopb3作為輸出訊號,而pwm7/iope1作為選通sn74hct273的輸出訊號。

下面的例項程式實現對4個led的迴圈驅動,即執行該程式後,led迴圈發光,即ds0→ds1→ds2→ds3→ds0…。下面為實現這個過程的例項程式。

圖5-3 輸出訊號和led的介面

* 檔名: *

.include "變數和暫存器定義

.include 向量表定義,請參考2.2節和附錄1

;b2塊的變數定義

.bss outdata,1i/o輸出值

.bss gpr0,1通用目標暫存器

;主**

.text

nopstart:

splk #000eh,imr遮蔽除int2,int3和int4以外的其他中斷

lacc ifr讀中斷標誌

sacl ifr清楚中斷標誌

clrc cnf配置塊b0到資料儲存空間

ldp #00e0h資料頁指向7000h-707fh

splk #06fh,wdcr如果vccp=5v,則禁止看門狗

ldp #scsr1>>7

splk #0000,scsr1

ldp #00e1h資料頁指向7080h-70ffh

splk #0f00h,mcra ;配置i/o,選擇iopb0、iopb1、iopb2、iopb3

splk #0f00h,pbdatdir ;配置為輸出模式

splk #0002h,mcrc ;配置i/o,選擇iope1

splk #0200h,pedatdir ;配置為輸出模式

ldp #0

splk #0h,gpr0為程式空間設定等待狀態發生器,0~7個等待狀態

out gpr0,wsgr

kick_dog復位看門狗

clrc intm使能dsp中斷

main:

ldp #0h

splk #1,outdata給輸出變數賦值

ldp #00e1h

lacc pedatdir

or #0202h輸出iope1,選通sn74hct273

sacl pedatadir

st_loop

ldp #0h

lacl outdata

or #0f00h

ldp #00e1h

sacl pbdatdir輸出訊號到led

call delay延時

lacl outdata

sfl左移1位

sacl outdata

bit outdata,bit4 ;判斷是否完成了乙個迴圈,如是則跳到main,復開始

b*** main, tc

b st_loop

.end

delay:

lar ar0,#01h產生延時的子程式

d_loop:

rpt #ffh延時引數可以根據使用者需要進行修改

nop banz d_loopret

事件物件IO管理程式例項

實驗名稱實驗時間學生姓名 事件物件i o管理程式例項2010 11 23蘆濤 所屬課程名稱實驗地點實驗器材及環境 tcp ip協議與網路程式設計信控系二機房pc機 visual c 6.0 實1.在實驗報告中,對事件物件i o管理程式例項中所呼叫的函式進行分析。驗目的實驗內容 1 分析事件物件所對應...

數字訊號處理例項

matlab下的數字訊號處理實現示例一訊號 系統和系統響應1 理想取樣訊號序列 1 首先產生訊號x n 0 n 50n 0 50 定義序列的長度是50a 444.128 設定訊號有關的引數a 50 sqrt 2.0 pi t 0.001 取樣率 w0 50 sqrt 2.0 pi x a exp a...

Excel應用例項

1.乙個8人的包工隊,承包了一項工程,工程造價50000元,工資情況300元 天2人 200元 天3人 150元 天3人,各人工時情況請看下面 費用花去8000元,稅金2500元,其他500元。剩餘資金按工時平均分紅。計算個人實際應得工資。新建excel 圖1 將題目 中的資料填入新建excel 中...