音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費注冊 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機 | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

周公:關(guān)于試驗程序uart0中DATARET.c的問題,請解釋一下!

作者:adaizhu 欄目:ARM技術(shù)
周公:關(guān)于試驗程序uart0中DATARET.c的問題,請解釋一下!
LPC2104配套光盤\實驗程序\uart_test\dataret\目錄下工程
1)其中下面這段程序中
..
set.parity;        // 奇偶校驗位,0為無校驗,1奇數(shù)校驗,2為偶數(shù)校驗   
..
/* 設(shè)置串口模式 */
   bak = set.datab-5;                   // 設(shè)置字長度
   if(2==set.stopb) bak |= 0x04;        // 判斷是否為2位停止位  
   if(0!=set.parity) set.parity = set.parity-1;
   bak |= set.parity;                   // 設(shè)置奇偶校驗
   U0LCR = bak;
..
其中這句話
if(0!=set.parity) set.parity = set.parity-1;
   bak |= set.parity;                   // 設(shè)置奇偶校驗

我覺得有問題?
set.parity = 0的時候可以設(shè)置無校驗位
可是
set.parity= 1設(shè)置通訊奇數(shù)校驗

set.parity= 2設(shè)置通訊偶數(shù)校驗
就不對了阿,想不明白

參考新版書中是不是應(yīng)該寫為
                
if(0!=set.parity)   // 設(shè)置奇偶校驗
   { set.parity = set.parity-1;bak |=0x08;}
   bak |= set.parity<<4;
您覺得呢?
2)不管保留原程序還是修改為
if(0!=set.parity)   // 設(shè)置奇偶校驗
   { set.parity = set.parity-1;bak |=0x08;}
   bak |= set.parity<<4;
我更改校驗位參數(shù)parity為1 或2,發(fā)現(xiàn)并不影響程序正常運行,似乎這個參數(shù)可有可無,為什么?
    

* - 本貼最后修改時間:2005-12-28 22:09:06 修改者:adaizhu

2樓: >>參與討論
adaizhu
.
up

* - 本貼最后修改時間:2005-12-28 22:10:28 修改者:adaizhu

3樓: >>參與討論
adaizhu
z
.

* - 本貼最后修改時間:2005-12-28 22:12:57 修改者:adaizhu

4樓: >>參與討論
hiiamme
呵呵 這個程序我也看了。
首先:對于,set.parity;// 奇偶校驗位,0為無校驗,1奇數(shù)校驗,2為偶數(shù)校驗 ;
    其實set.parity還可以:為3-校驗位強制為1,為4-校驗位強制為0。
其次;對于,if(2==set.stopb) bak |= 0x04;  // 判斷是否為2位停止位  
            if(0!=set.parity) set.parity = set.parity-1;
            bak |= set.parity;            // 設(shè)置奇偶校驗
如果你在主程序中主調(diào)程序中賦值為:set.stopb=1;set.parity=0,的話兩個if語句執(zhí)行不到結(jié)果就對了。
不過要是set.stopb=2,執(zhí)行bak |= 0x04,設(shè)置2個停止位。
可是  if(0!=set.parity) set.parity = set.parity-1;
      bak |= set.parity;
這句似乎真的不對,應(yīng)該改成:(是不是你敲錯了,嘻嘻)
if(0!=set.parity) {set.parity = set.parity-1;bak|=0x08;}
bak |= set.parity<<4;
這樣,如果0!=set.parity,則bak|=0x08,允許奇偶校驗。
之后,bak |= set.parity<<4;根據(jù)set.parity的值設(shè)置為奇數(shù)校驗、偶數(shù)校驗、校驗位強制為1或者校驗位強制為0。


/*用過EasyArm開發(fā)板的來群15511648啊,高手來做群主才好!*/


* - 本貼最后修改時間:2005-12-28 21:54:53 修改者:hiiamme

5樓: >>參與討論
adaizhu
。
hiiamme:我沒有看錯,我直接打開光盤文件中的該工程的
但是我怎么修改校驗位=1或則=2,而PC中川口助手校驗位=NONE居然還是可以運行,汗

6樓: >>參與討論
ADAIZHU
up
up

參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
請教zlgarm
有無辦法實現(xiàn)LPC2210通過串口的ISP功能?
我如何才能讀出IO0PIN口的狀態(tài)?
請教周公:關(guān)于GPIO功能選擇的一個菜鳥問題
Flash和ram的優(yōu)缺點
免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號