基于EPM7128设计的数据合并转换器

[09-11 23:03:17]   来源:http://www.88dzw.com  单片机学习   阅读:8853

文章摘要:从三者的时序图可知,每当一个字节的最后一位完成移位后,在FRAMECLK脉冲反相的下降沿触发下读取FIFO数据,这时74165的装载使能74165STD恰好为低电平(与非结果),完成部数据装载,然后在PCMCLK脉冲的上升沿作用下开始新一软次的数据移位。2.3 帧长计数器的部分两个74161设计长1/64的分频器,也叫帧长计数器,此计数器的时钟为FRAMECLK,计数器的输出最高两位逻辑与为中断INT7,把与门输出与次高位逻辑异或为中断INT5。这样,INT7比INT5在时序上早半个周期。开始复位后,INT7脉冲首先产生,触发中断,COU中断后在服务程序中把64个字节数据写到FIFO,然后屏蔽

基于EPM7128设计的数据合并转换器,标签:单片机开发,单片机原理,单片机教程,http://www.88dzw.com

从三者的时序图可知,每当一个字节的最后一位完成移位后,在FRAMECLK脉冲反相的下降沿触发下读取FIFO数据,这时74165的装载使能74165STD恰好为低电平(与非结果),完成部数据装载,然后在PCMCLK脉冲的上升沿作用下开始新一软次的数据移位。

2.3 帧长计数器的部分

两个74161设计长1/64的分频器,也叫帧长计数器,此计数器的时钟为FRAMECLK,计数器的输出最高两位逻辑与为中断INT7,把与门输出与次高位逻辑异或为中断INT5。这样,INT7比INT5在时序上早半个周期。开始复位后,INT7脉冲首先产生,触发中断,COU中断后在服务程序中把64个字节数据写到FIFO,然后屏蔽中断INT7,半个周期后,FIFO中还剩32个字节数据(因此FIFO的读脉冲和FRAMECLK反相同频)。然后中断INT5到来,CPU响应后,再写64个字节数据给FIFO,使FIFO中一直保持有数据的状态(可避免读FIFO正好落在两个写FIFO之间,FIFO因无数据而读死)。这样,每当中断INT5到来,都写64字节给FIFO,周而复始,所以把64字节定为帧长。

 

3 软件设计

outp(0x303,0x36);//方式3,方波。//

outp(0x300,0x50);//timer0,分频比为80。//

outp(0x300,0x00);

outp(0x303,0x74);//方式2,脉冲。//

outp(0x301,0x08);//timer1,分频比为8。//

outp(0x301,0x00);

数据合并:

if((com1_count%24)= =0) ;//串行口1的24字节数据放在数组Frame的4~27的位置。//

{

com_buf1[com1_count++]=db1; //串行口1接收数据//

int Original_Counter;

Original_Counter=com1_count/24;

memcpy(Frame[Original_Counter-1]+4,&com_buf1[com1_count-24],24);

}

if((com2_count%24)= =0); //串行口2的24字节数据放在数组Frame的28~51的位置。//

{

com_buf2[com2_count++]=db2 ;//串行口2接收数据//

int Original_Counter;

Original_Counter=com2_count/24;

Memcpy(Frame[Original_Counter-1]+28,&com_buf2[com2_count-24],24) ;//合并后的数据放在Frame数组中。//

写FIFO:

void Send_To_Fifo(int number); //Send_To_Fifo函数为中断服务程序的一部分。//

{

for(int i=0;i<64;i++)

outp(WFIFO,Frame[number][i]); //数组送给FIFO,实现数据合并//

上一页  [1] [2] 


Tag:单片机学习单片机开发,单片机原理,单片机教程单片机学习

《基于EPM7128设计的数据合并转换器》相关文章

分类导航
最新更新
热门排行