`
yuanjinxiu
  • 浏览: 653474 次
文章分类
社区版块
存档分类
最新评论

在ATmega8上模拟并行三种总线协议数据传输

 
阅读更多
0
 在毕业设计中,选用了AVR+PDIUSBD12的方案应用于数据采集系统设计。但AVR单片机中有一部分没有自动外部寻址功能。如我们选用的ATmega16,所以就需要自己模拟一个数据地址总线时序。

知识要点:
1.外部数据/地址总线中包括了三种总线:数据总线,地址总线,控制总线。数据总线使用于数据的传输,在51单片机中使用P0端口;地址总线用于外部数据地址的选择,一般的微控制器可扩展到16位寻址。51单片机中使用P0 & P2 端口作为地址I/O 口;控制总线用于时序的控制,它包含了(ALE_N RD_N WR_N PSEN_N)控制线。
2. 总线的工作过程:
A. 当ALE_N为高电平的时候可以改变选取的数据地址,ALE_N的下 降沿把地址锁存住
B. RD_N 或WR_N为低电平的时候,允许把数据读出或写入外部器件中
C. PSEN_N 为片选使能端口,低电平的时有效
3. 整个过程的工作时序可以参考AT89S52.PDF 文档资料

在ATmega8中实现的程序清单如下:


void Output_D12(uchar Address,uchar Data)
{
//*((uchar xdata *) Address) = Data;
PORTD |=(1<<ALE); //SET ALE H
DDRB=0xff;
PORTB=Address; //load address
NOP();
PORTD &=~(1<<ALE); //RESET ALE L
PORTB=Data;
PORTC &=~(1<<D12WR); //Enalbe write
NOP(); //waite some time
NOP();
PORTC |=(1<<D12WR);

}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics