微控制器序列通訊工程心得 接收端

2021-09-29 11:36:03 字數 2356 閱讀 8680

這篇部落格記錄下序列通訊的接收端的訊號處理**。

下面的兩段**分別為c51和組合語言,c51是為了方便理解而寫的,不保證**能工作,請讀者見諒。

#include

sbit remote = p1^1;

unsigned

char tn,remote_num;

unsigned

char code1,code2,remote_data1,remote_data2;

unsigned

char flag0;

bit f_pulse =0;

void

read_pulse()

;void

value_jud()

;void

int_init()

void

timer0

() interrupt 1 using 0

void

read_pulse()

//再對code2的第0位進行操作,

elseif(

(!remote)

&&f_pulse)}}

void

value_jud()

code2 = code2<<1;

//每次處理code2第0位之前,先將其左移一位

//code1 = code1<<1; //此處不清楚c51是否有進製位,暫時只收8位資料

if(tn >

2&& tn <9)

}else

if(tn >=

9&& tn <16)

}}void

main()

彙編的原始碼如下:

ld			a,tn

hsubia d'200'

snzb status,c

szincr tn

nopsnzb remote ;remote初值為1

,snzb命令的意思為:值為1時跳過下一條指令,不為1則執行

jp decend_pluse

rise_pluse:

;上公升沿

szb f_pluse ;szb命令的意思為:值為0時跳過下一條指令

jp end_remote_receive

setb f_pluse

jp value_jud

decend_pluse:

;下降沿

snzb f_pluse

jp end_remote_receive

clrb f_pluse

value_jud:

ld a,tn

hsubia d'2'

;判斷tn是否大於2

snzb status,c

jp error_remote ;小於2跳轉到錯誤處理

ld a,tn

hsubia d'16'

;大於16也跳轉到錯誤處理

szb status,c

jp error_remote

rlcr code2 ;code2收滿8位後,再左移則code2.

7移到c中

rlcr code1 ;通過c可將code2.

7移到code1.

0中,接收到的16位資料最頭部在code1中

ld a,tn

hsubia d'9'

szb status,c

jp receive1

receive0:

clrb code2,

0 jp bit_count

receive1:

setb code2,

0bit_count:

szincr remote_num

nopld a,remote_num

hsubia d'16'

;根據需要,選擇儲存的資料位數

snzb status,c

jp end_bit_jud

ld a,code1

ld remote_data1,a ;接收完16位資料,remote_data1儲存載波前8位

ld a,code2

ld remote_data2,a ;remote_data2儲存載波後8位

setb f_remote

error_remote:

clr remote_num

clr code1

clr code2

end_bit_jud:

clr tn

end_remote_receive:

微控制器序列通訊工程心得 傳送端

這篇部落格記錄下最近乙個星期研究的兩塊板通過乙個口線實現的資料傳輸。我用的兩塊板上各有乙個微控制器,此處稱為控制板和電源板。兩微控制器各出乙個i o口,乙個輸入乙個輸出,然後通過規定此i o口高電平和低電平的持續時間來傳輸 0 和 1 這種傳輸方式非常普遍,紅外遙控基本原理與這個十分類似,不過紅外遙...

微控制器(記憶體篇) 通訊工程專業筆記

儲存器及儲存空間 特殊功能暫存器 高128位元組,sfr 擴充套件 d7d6 d5d4 d3d2 d1d0 cyac f0rs1 rs0ovf1p rs1,rs0 暫存器組選擇位,用來選擇當前的工作暫存器組。f0,f1 使用者標識位0,1 p 奇偶校驗位,如果a暫存器中1的個數字奇數時,p位置1,為...

微控制器(一)51微控制器串列埠接收 傳送通訊

這次做課設整體不太順利,因為學校的開發板真的是 一言難盡 這裡就選擇性的分享一點 方面,有據可循,不那麼玄學的問題。只要開了中斷,一點要寫中斷函式,可以是 void timer0 interrupt 4 可以是這樣,先放乙個空函式,不會有什麼玄學問題 不信,嘿嘿?你試試 這是個串列埠收發暫存器,教科...