矩形波電壓發生器
采用單緩沖方式,口地址設為FEFFH.
參考程序如下:
????????? ORG?? 1100H
START:??? MOV?? DPTR , #00FEH?? ;送DAC0832口地址
LOOP:???? MOV?? A , #dataH???? ;送高電平數據
????????? MOVX? @ DPTR , A
????????? LCALL?? DELAYH?????? ;調用延時子程序
????????? MOV?? A , #dataL???? ;送低電平數據
????????? MOVX? @ DPTR , A
????????? LCALL?? DELAYL?????? ;調用延時子程序
????????? SJMP??? LCALL
執行上述程序就可得到如圖9.5所示的矩形波。
圖9.5 D/A轉換產生的矩形波
幾點說明:
(1)以上程序產生的是矩形波,其低點平的寬度由延時子程序DELAYL所延時的時間來決定,高電平的寬度則由DELAYH所延時的時間決定。
(2)? 改變延時子程序DELAYL和的DELAYH延時時間,就可改變矩形波上下沿的寬度。若DELAYL=DELAYH(兩者延時一樣),則輸出的是方波。
(3)? 改變上限值或下限值便可改變矩形波的幅值;單極性輸出時為0~-5V或0~+5V;雙極性輸出時為-5V~+5V。
【例9.3】三角波電壓發生器
利用DAC0832產生三角波的參考程序如下:?
????? MOV?????? A , #00H????? ;取下限值
????? MOVX??? DPTR , #FEFFH? ;指向0832口地址??? SS1: MOVX????? @DPTR , A???? ;輸出
????? NOP???????????????????? ;延時
????? NOP
????? NOP
SS2:? INC?????? A??????? ;轉換值增量
????? JNZ????? SS1?????? ;未到峰值,則繼續
SS3:? DEC?????? A??????? ;已到峰值,則取后沿
????? MOVX????? @DPTR , A???? ;輸出
????? NOP??????????????? ;延時
????? NOP
????? NOP
????? JNZ?????? SS3????? ;未到谷值,則繼續
????? SJMP????? SS2????? ;已到谷值,則反復
評論
查看更多