code segment
assume cs: code
start:
;初始化波特率除數暫存器
mov dx , 3fbh ;指向線路控制暫存器
mov al , 80h ;位7置1
out dx , al ;傳送此位元組
mov dx , 3f9h ;指向波特率除數的最高有效位
mov al , 0 ; 1200 bps對應的最高有效位
out dx , al ;傳送此位元組
dec dx ;指向波特率除數的最低有效位
mov al , 60h ; 1200 bps對應的最低有效位
out dx , al ;傳送此位元組
;初始化線路控制暫存器:
mov al , 1bh ;資料長度為8位 , 1個奇偶校驗位 , 偶校驗 , 1個停止位
mov dx , 3fbh ;指向線路控制暫存器
out dx , al ;傳送此位元組
;初始化中斷允許暫存器
mov dx , 3f9h ;指向中斷允許暫存器
mov al , 0 ;禁止所有中斷
out dx , al ;傳送位元組
read: ;線路狀態檢測迴圈
mov dx , 3fdh ;指向線路狀態暫存器
in al , dx ;取狀態位元組
test al , 1eh ;檢查錯誤
jnz error ;若出錯則轉錯誤處理例程
test al , 01h ;測試是否已收到資料
jnz receive ;轉接收例程
test al , 20h ;測試是否可以傳送字元
jnz send ;若是**送例程
jmp read ;迴圈檢測
send: ;傳送字元(來自鍵盤):
mov ah , 1 ;bios功能用以檢測是否有字元可讀
int 16h ;bios鍵盤中斷
jz read ;若無擊鍵則返回迴圈
mov ah , 0 ;bios功能用於取擊鍵碼
int 16h ;擊鍵碼現在al中
cmp al , 03h ;檢測ctrl+c
jz exit ;若是 , 轉exit處結束程式
mov dx , 3f8h ;指向傳送保持暫存器
out dx , al ;傳送字元
jmp read ;返回迴圈
receive: ;接收資料(在螢幕上顯示):
mov dx , 3f8h ;接收資料暫存器
in al , dx ;取新收到的字元
cmp al , 03h ;檢測ctrl+c
jz exit ;若是 , 轉exit處結束程式
mov dl , al ;準備顯示字元
mov ah , 2 ;用於顯示字元的dos中斷
int 21h ;顯示字元
cmp al , 0dh ;判斷剛才收到的字元是否為回車
jnz read ;不是,轉線路檢測迴圈
mov dl , 0ah ;若是,則加顯示乙個換行符
mov ah , 2
int 21h
jmp read ;返回線路檢測迴圈
error: ;出錯處理,顯示乙個提示
push cs
pop ds
mov dx , offset error_message
mov ah , 9
int 21h
exit: ;程式退出
mov ah , 4ch
int 21h
error_message db 0ah , 'error!$' ;定義出錯時顯示的提示
code ends
end start
微控制器 串列埠與PC通訊
先通過串列埠除錯工具即pc傳送字元給微控制器,微控制器接收資料後再發給pc,再次通過串列埠除錯工具觀察傳送結果,即實現了pc到微控制器的收發 由於本地 需要安裝虛擬串列埠,pc用com1口,mcu的compim設為com2,波特率均為9600 org 0000h ajmp main org 0023...
PC機串列埠通訊的工作原理
pc機串列埠通訊的工作原理是什麼 串列埠是計算機上一種非常通用裝置通訊的協議 不要與通用序列匯流排universal serial bus或者usb混淆 大多數計算機包含兩個基於rs232的串列埠。串列埠同時也是儀器儀表裝置通用的通訊協議 很多gpib相容的裝置也帶有rs 232口。同時,串列埠通訊...
微控制器和PC機之間的連線程式
pc計算機與微控制器串列埠通訊源程式下面是乙個微控制器與pc機通訊的程式,pc機程式用c語言來編寫,微控制器程式用組合語言來編寫1.pc機程式設計pc採用toubrc進行編寫。程式如下 include defineport0x3f8 利用串列埠1進行通訊 intch 15 main charc cl...