历史上的今天
返回首页

历史上的今天

今天是:2024年12月26日(星期四)

正在发生

2019年12月26日 | AVR单片机读写CPLD程序实例(ATmega128程序案例)

2019-12-26 来源:elecfans

项目中需要使用CPLD完成一部分算法设计,参数由AVR给出,因此需要完成AVR和CPLD的通信。因此写了一个测试程序。CPLD挂在AVR的数据和地址总线上,AVR使用ATmega128,在CPLD中设置几个寄存器,通过AVR读写寄存器来实现两者之间的通信。


Mega128的外部存储空间从0X1100开始,因此只需要配置相应的寄存器后读取或者写入相应的地址就可以,程序比较简单,注释中都有说明,仅供参考。


/******************************************************************* 

名称:mian.c 

功能:测试AVR与CPLD的通信,将数据写入CPLD中配置的寄存器,然后读出, 

通过串口输出做比较 

作者:emouse 

时间:2011.1.4 

版本:1.0 

注意:无 

********************************************************************/#include"avr/io.h"   

#include"avr/interrupt.h"   

#include"util/delay.h"  

#define SetBit(Port,N)  (Port|=(1<

#define ClrBit(Port,N)  (Port&=~(1<

#define ReverBit(Port,N)  (Port^=(1<

#define GetBit(Pin,N)   ((Pin>>N)&0x01)   //读取IO某一位   

unsigned char data;  

void XRAM_example(void)  

{  

unsigned char *q =0x1100;   //寄存器1  

unsigned char *m =0x1101;   //寄存器2  

unsigned char *p =0x1102;   //寄存器3  

PORTD=0XFF;                

DDRD=0XFF;  

DDRC = 0xFF;                //默认情况下端口C用做高地址,可以每只寄存器把端口C释放  

PORTC = 0x00;  

*q= 0xCC;                   //向寄存器1中写入数据,CPLD中自动将寄存器1的值付给寄存器3  

data=*p;                    //独处寄存器3中的值,在循环中用串口输出  

}  

void USART0_Init(void)   

{   

UCSR0A=0x20; //波特率不加倍,单机通信模式   

UCSR0B=0x18; //中断不使能,允许发送和接收   

UCSR0C=0x06;//异步模式,无校验,8位数据,1位停止位   

UBRR0H=0x00;   

UBRR0L=51;//9600波特率   晶振8M  

}   

void USART0_SendByte(unsigned char data)   

{   

while(!(UCSR0A&(1<

UDR0=data;    //发送数据   

}    

int main(void)   

{      

unsigned char i=0;   

USART0_Init();  //初始化USART0接口     

MCUCR=0xC0;     //使能外部SRAM   

XMCRA=0x00;  

DDRA=0XFF;  

PORTA=0XFF;   

DDRE=0xff;   

DDRD=0xff;   

PORTD=0x00;      //使能 CS A16 A17 =11   

USART0_SendByte(0x88);  

while(1)   

{        

ReverBit(PORTA,0);  

XRAM_example();  

_delay_ms(500);  

USART0_SendByte(data);   

}   

}   

推荐阅读

史海拾趣

Avic公司的发展小趣事

Avic公司注重提升自主创新能力,不断加大在航空电子技术领域的研发投入。公司建立了一支高素质的研发团队,并积极引进国内外先进的研发设备和技术。这些措施有效提升了公司的创新能力,为公司在航空电子领域的持续发展提供了有力保障。

Artaflex公司的发展小趣事

创新是Artaflex公司持续发展的核心动力。公司不断投入研发资金,加强技术创新和新产品开发。通过不断推出具有创新性和竞争力的产品,公司不仅满足了市场的多样化需求,也赢得了客户的信任和好评。同时,公司还注重人才培养和团队建设,为公司的长期发展奠定了坚实的基础。

Custom Electronics Inc公司的发展小趣事

随着公司规模的扩大和产品质量的提升,CEI开始寻求更广阔的市场空间。通过与全球知名电子产品制造商建立合作关系,CEI的产品逐渐进入国际市场。同时,CEI还积极参与国际电子行业的交流与合作,不断引进先进的生产技术和管理经验,为公司的长远发展奠定了坚实基础。

AVAGO公司的发展小趣事

随着技术的不断进步,AVAGO公司开始致力于研发更先进的半导体技术。其中,一次重大的技术突破发生在光纤通信领域。公司成功研发出了一种高性能的光纤收发器,这一创新不仅提高了数据传输的速度和稳定性,还极大地推动了光纤通信技术的发展。这一产品迅速在市场上获得了广泛应用,为AVAGO公司带来了可观的收益。

Abbatron公司的发展小趣事

随着技术的不断成熟和市场的不断扩大,Abbatron公司开始将目光投向国际市场。公司积极参与国际电子展会,与海外企业建立联系,逐渐打开了国际市场的大门。通过不断的市场拓展和国际化战略,Abbatron公司的品牌影响力逐渐提升,成为了国际电子市场上的一股重要力量。

Curtis Industries公司的发展小趣事

随着电子行业的不断发展,Curtis Industries公司意识到技术创新的重要性。公司投入大量资源进行技术研发,成功推出了一系列具有行业领先水平的产品。其中,公司在某一关键领域的突破性技术,不仅解决了行业内的技术难题,还为公司赢得了广泛的赞誉。Curtis Industries因此成为了电子行业的技术创新引领者,推动了整个行业的发展。

问答坊 | AI 解惑

智能功率开关:在汽车环境中应用

智能功率开关(IPS)在汽车应用环境中特别受欢迎,在这类环境里这些开关必须处理一些最恶劣的电器故障---包括地线丢失或偏移,电压尖峰,反接或电池开路以及负载突变。IPS 驱动从功率继电器和电磁阀到电机和灯的这些负载的同时,针对所有这些故障提 ...…

查看全部问答>

美大学研发脑波控制机械臂

美国南佛罗里达大学的研究人员已经开发出了一种可安装在轮椅上的机械臂,这种机械臂通过捕获用户的脑电波进行操作,从而可以帮助残疾人更好的完成日常生活。  这种机械臂的产生将会改变因脊椎受伤而全身瘫痪病人的生活。计算机接口由USF心理学教 ...…

查看全部问答>

debuge相关问题

小弟吐血跪求各位大侠指点迷津 debuge e:\\ASM\\FIRST.EXE -R AX=0000        BX=0000        CX=0113        DX=0000        SP=0000      ...…

查看全部问答>

很简单的问题,构造一个加法器和定时器的问题

突然有个想法,想给自己的汽车作个附件,估计还能开多久 主要是这样想的,一个传感器测量当前油量(夜面高度或者直接读油表) 隔5分钟测量一下,看下去了好多,然后用当前油量除一下,得出时间 但是上学时学得东西忘得差不多了,只记得好像有现 ...…

查看全部问答>

中九又快加密了吧?

反反复复不知何时了结…

查看全部问答>

百分加急freescale M13213 STOP3低功耗问题!

小弟最近在用freescale的M13213芯片做无线控制设备,设备有低功耗要求,为了满足要求,我使用了STOP3工作模式,用户手册给出的功耗是2UA,但是实际测试的时候发现有好几百UA,差别实在是太大了,查了多方的原因都没有找出根源。我测试STOP1,STOP2模 ...…

查看全部问答>

Import BSPs的问题,参与者有分!!!

如题: BSPs包为ep931x文件 我把BSPs的压缩包放在F:\\WINCE420\\PLATFORM的目录下,注(F:\\WINCE420是不是就是%WINCEROOT% ???) 然后在Manage   Catalog   Features  Import F:\\WINCE420\\PLATFORM\\ep931x 下 ...…

查看全部问答>

关于430IO口接收中断问题

我做了一块板子,不过当时没注意把需要产生中断的管脚接到430的P5口上了,可是P5口好像没有接收中断,板子太小不好飞线,我该怎么补救啊…

查看全部问答>

我的串行口联在电脑上怎么不显示呢?

我这怎么办呢  急求  谢谢这位了 就是显示说我的驱动软件没有安装好   卸了从装还是这样的…

查看全部问答>