| 
  |||||||||||
| 技術(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  | 
  
M162 UART問題 | 
  
| 作者:lxyzhy 欄目:單片機 | 
各位DX,我用M162的串口通訊,用AVR STUDIO仿真調(diào)試時出了點問題。 我的UART初始化程序如下: UCSR0A = 0x00; //Disable While Setting Baud Rate UCSR0B = 0x00; //Disable While Setting Baud Rate UCSR0C = 0x00; //Disable While Setting Baud Rate UBRR0H = 0x00; UBRR0L =0x23; //Set Baud Rate UCSR0A = 0x00; // UCSR0B = 0x18; // UCSR0C = (1<<URSEL0)|(1<<UCSZ01)|(1<<UCSZ00); 問題是: 不知為什么仿真調(diào)試時單步執(zhí)行能看到上面各個寄存器在語名執(zhí)行后的變化。 但最后一句執(zhí)行時UCSR0C寄存器還是0X00,沒有變化。 是我的初始化步驟不對嗎,還是其他問題? 請指教,謝謝!  | 
  
| 2樓: | >>參與討論 | 
| 作者: zsmbj 于 2005/11/3 15:38:00 發(fā)布:
         不會吧!UCSRC初始化應該為0x86. 初始化時設(shè)置UCSRC =0 那句是錯的了。設(shè)置UCSRC時必須設(shè)置URSEL位才行。  | 
  |
| 3樓: | >>參與討論 | 
| 作者: lxyzhy 于 2005/11/3 15:44:00 發(fā)布:
         最后一句是0X86啊 謝謝ZSMBJ兄 我的最后一句寫UCSR0C是0X86啊 UCSR0C = (1<<URSEL0)|(1<<UCSZ01)|(1<<UCSZ00); 就是最后一句寫了后寄存器不變化還為0X00  | 
  |
| 4樓: | >>參與討論 | 
| 作者: zsmbj 于 2005/11/3 16:48:00 發(fā)布:
         是不是看錯地址了? 我是說你的程序開始并沒有設(shè)置UCSRC寄存器,所以初始化值0X86不會變化。如何會有0X00出現(xiàn)呢?  | 
  |
| 5樓: | >>參與討論 | 
| 作者: lxyzhy 于 2005/11/4 8:44:00 發(fā)布:
         是這樣的 我的最后一句寫的是UCSR0C= (1<<URSEL0)|(1<<UCSZ01)|(1<<UCSZ00); 也就是UCSR0C=0X86,但仿真時執(zhí)行這一句后沒有看到UCSR0C寄存器的變化 還是顯示的0X00 不知何原因? 再次謝謝!  | 
  |
| 6樓: | >>參與討論 | 
| 作者: zsmbj 于 2005/11/4 8:56:00 發(fā)布:
         干嗎老和這一個寄存器叫勁呢? 你的設(shè)置都是對的了。UBRRH和UCSRC共用一個寄存器。所以你看到的值應該是UBRRH了。  | 
  |
| 7樓: | >>參與討論 | 
| 作者: 我為你狂 于 2005/11/6 21:14:00 發(fā)布:
         UBRRH和UCSRC 最好不要全依賴仿真的,燒個片子試試UBRRH和UCSRC是共用同一個地址。寫UCSRC是要使最高位置1。  | 
  |
| 8樓: | >>參與討論 | 
| 作者: hanyafeng 于 2005/11/11 12:20:00 發(fā)布:
         M162的特殊的熔斷絲設(shè)置 用JTAG仿真器或燒結(jié)器打開熔斷絲設(shè)置屬性葉,可以看到有一項默認設(shè)置被選“OSC的頻率被8分頻”,去掉此項即可。當然,為了進一步加深印象可以看一下DATASHEET中波特率生成示意圖--其中在OSC后面有一個計數(shù)器然后再當作主頻進入各個工作單元。  | 
  |
| 9樓: | >>參與討論 | 
| 作者: xinjie1023 于 2005/12/4 16:34:00 發(fā)布:
         干嗎老和這一個寄存器叫勁呢? 應該是只要設(shè)置URSEL為一,那么讀出得值應該是UCSRC吧  | 
  |
  | 
    
 
  | 
  
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入 | 
Copyright © 1998-2006 www.udpf.com.cn 浙ICP證030469號  |