<?xml version="1.0" standalone="yes"?>
<?xml-stylesheet type="text/xsl" href="css/rss.xslt"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>疯狂单片机 - AVR单片机测试程序</title><link>http://www.mculover.com/</link><description>单片机DIY制作小站 - </description><generator>RainbowSoft Studio Z-Blog 1.8 Arwen Build 90619</generator><language>zh-CN</language><copyright>Copyright 2009-2010 www.mculover.com All Rights Reserved. 京ICP备09098861号站长：莫旭冬 联系邮箱：moxudong@yeah.net </copyright><pubDate>Mon, 06 Sep 2010 23:21:59 +0800</pubDate><item><title>AVR单片机Atmega128外扩RAM</title><author>a@b.com (莫旭冬)</author><link>http://www.mculover.com/post/50.html</link><pubDate>Fri, 14 May 2010 13:38:05 +0800</pubDate><guid>http://www.mculover.com/post/50.html</guid><description><![CDATA[<p>&nbsp;&nbsp;&nbsp; 由于AVR系列单片机采用的是内部外部RAM统一编址，ATmega128工作在非ATmega 103模式时具有4k+256B的包括寄存器文件（通用工作寄存器）、I/O寄存器、扩展I/O寄存器和内部SRAM的连续内部存储空间。所以在扩展外部RAM时，和内部SRAM地址重叠的外部RAM地址是不能直接访问的。也就是说扩展的外部RAM每64k要浪费掉内部SRAM那么大的空间（AT90系列如此）。所幸的是mega系列解决了这一缺点，专门有一个寄存器XMCRB用来解决对与内部SRAM地址空间相同地址的外部RAM访问。其低三位XMM2 、XMM1 、XMM0三位的设置，决定高位地址线PC口的哪些口线被释放为普通I/O，而不是作为高位地址。这样就可以巧妙地屏蔽高位，就ATmega128而言，要避开内部的4k+245B空间,注意到,只要所访问的地址范围大于0X1100(且MCUCR,XMCRA设置正确),那么所访问的就是外部RAM空间。所以在访问小于4k+245B的外部地址时，只要使地址大于0X10FF就可以访问了。0X1100用二进制表示为：0001，0001，0000，0000，高位地址线PC5、PC6、PC7没有使用到。在访问的时候就可设置XMCRB的XMM1、XMM0位为1，释放该三根地址线为普通I/O，将其设为输出。并且输出0；并在外部地址加上一个虚地址以使地址超过0X1100，如此设置，就可以访问外部0X0000～0X10FF空间了。超出这个空间，CPU就自动将其识别为外部相应的地址了，不用设置XMCRB寄存器（即不需释放任何总线），也不需加虚地址，按照正常外部RAM访问即可。在此约定所加的虚地址为0X2000，XMCRB寄存器设置为****，*011，所释放的地址线输出0。</p><p>...</p>]]></description><category>AVR单片机测试程序</category><comments>http://www.mculover.com/post/50.html#comment</comments><wfw:comment>http://www.mculover.com/</wfw:comment><wfw:commentRss>http://www.mculover.com/feed.asp?cmt=50</wfw:commentRss><trackback:ping>http://www.mculover.com/cmd.asp?act=tb&amp;id=50&amp;key=a50fc31d</trackback:ping></item><item><title>Atmega128串口UART0/1测试代码</title><author>a@b.com (莫旭冬)</author><link>http://www.mculover.com/post/49.html</link><pubDate>Fri, 14 May 2010 10:54:03 +0800</pubDate><guid>http://www.mculover.com/post/49.html</guid><description><![CDATA[<p>#include&lt;avr/io.h&gt;<br />#define fosc 7372800UL //晶振7.3728MHZ<br />#define baud 9600//波特率<br />#define com0</p><p><br />void uart0_init(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp; UCSR0B = 0x00; //disable while setting baud rate<br />&nbsp;&nbsp;&nbsp;&nbsp; UCSR0A = 0x00;<br />...</p>]]></description><category>AVR单片机测试程序</category><comments>http://www.mculover.com/post/49.html#comment</comments><wfw:comment>http://www.mculover.com/</wfw:comment><wfw:commentRss>http://www.mculover.com/feed.asp?cmt=49</wfw:commentRss><trackback:ping>http://www.mculover.com/cmd.asp?act=tb&amp;id=49&amp;key=8678d357</trackback:ping></item></channel></rss>
