0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

AVR单片机读写CPLD程序实例(ATmega128程序案例)

算法&编程学院 2018-04-19 12:40 次阅读

项目中需要使用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"

#defineSetBit(Port,N)(Port|=(1<

#defineClrBit(Port,N)(Port&=~(1<

#defineReverBit(Port,N)(Port^=(1<

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

unsignedchardata;

voidXRAM_example(void)

{

unsignedchar*q=0x1100;//寄存器1

unsignedchar*m=0x1101;//寄存器2

unsignedchar*p=0x1102;//寄存器3

PORTD=0XFF;

DDRD=0XFF;

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

PORTC=0x00;

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

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

}

voidUSART0_Init(void)

{

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

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

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

UBRR0H=0x00;

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

}

voidUSART0_SendByte(unsignedchardata)

{

while(!(UCSR0A&(1<

UDR0=data;//发送数据

}

intmain(void)

{

unsignedchari=0;

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

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

XMCRA=0x00;

DDRA=0XFF;

PORTA=0XFF;

DDRE=0xff;

DDRD=0xff;

PORTD=0x00;//使能CSA16A17=11

USART0_SendByte(0x88);

while(1)

{

ReverBit(PORTA,0);

XRAM_example();

_delay_ms(500);

USART0_SendByte(data);

}

}

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • cpld
    +关注

    关注

    32

    文章

    1243

    浏览量

    168288
  • AVR单片机
    +关注

    关注

    22

    文章

    607

    浏览量

    55047
  • ATmega128
    +关注

    关注

    3

    文章

    77

    浏览量

    26351
收藏 人收藏

    评论

    相关推荐

    ATmega128单片机入门与提高》光盘.rar

    大量的实用程序,并在最后一章给出了许多综合实例实例程序全部用C语言编写,且已全部在ICCAVR 6.31A开发环境上编译通过。《Atmega128
    发表于 08-16 10:36

    ATmega128单片机怎么学

    我是学习计算机科学与技术的,现在想做游历机器人。刚接触ATmega128单片机,该怎么学?自己以前也没学过单片机啊,连51都不懂。该怎么学?恳求大师指点
    发表于 10-13 15:26

    AVR ATMega128烧写程序问题

    烧写以前运行正常的程序AVR ATMega128芯片中,为什么现在没有反应了,接着烧写了几个都是这样,疑惑中。。。。。。
    发表于 03-23 15:37

    AVR单片机应用开发指南及实例

    图书简介及目录:《AVR单片机应用开发指南及实例精解》结构清晰,由浅入深,通俗易懂,结合ATmega128单片机阐述
    发表于 07-28 10:28

    请问谁有ATMEGA128单片机控制TCS3200颜色传感器的程序

    谁能提供一个ATMEGA128单片机控制TCS3200颜色传感器的程序
    发表于 01-16 06:36

    AVR单片机ATmega128的PWM的设计方法

    高分辨率计数器的使用,方波的占空比被调制用来对一个具体模拟信号的电平进行编码。PWM信号仍然是数字的,因为在给定的任何时刻,满幅值的直流供电要么完全有(ON),要么完全无(OFF)。只要带宽足够,任何模拟值都可以使用PWM进行编码。本文提出AVR单片机
    发表于 02-19 06:26

    采用ATMEGA128单片机结合CPLD 实现了对VGA显示

    采用ATMEGA128 单片机结合CPLD 实现了对VGA 显示器和激光打印机的控制作者:时永乐 王培勇 转贴自:微计算机信息摘要:用 ATMEGA128
    发表于 02-08 09:52 107次下载

    ATmega128在开发应用中应注意的问题

    ATmega128在开发应用中应注意的问题 ATmega128AVR系列中功能最强的单片机,具有如下主要特点:   (1)先进的RISC精简指令集结构:
    发表于 10-26 09:06 2823次阅读

    ATmega128几个常用程序例子

    ATmega128单片机经典例题 对初学者很有帮助的哦
    发表于 11-03 18:14 62次下载

    AVR单片机Atmega128在FPGA配置中的运用

    在嵌入式系统设计中,掌握MCU对FPGA的配置,对系统的设计是十分必要的。根据EPFIOKIO的配置时序和AVR单片机Atmega128的接口特点,详细介绍了Atmega128对EPF
    发表于 10-11 15:35 18次下载

    基于Atmega128单片机SD卡读写程序(免费分享)

    avr Atmega128单片机SD卡读写程序
    发表于 12-29 20:55 21次下载

    AVR单片机Atmega128在FPGA配置的应用和对EPF10K10软硬件设计原理

    在嵌入式系统设计中,掌握MCU对FPGA的配置,对系统的设计是十分必要的。根据EPF10K10的配置时序和AVR单片机Atmega128的接口特点,详细介绍了Atmega128对EPF
    发表于 10-26 15:34 9次下载
    <b class='flag-5'>AVR</b><b class='flag-5'>单片机</b><b class='flag-5'>Atmega128</b>在FPGA配置的应用和对EPF10K10软硬件设计原理

    AVR单片机CPLD的通信设计

    项目中需要使用CPLD完成一部分算法设计,参数由AVR给出,因此需要完成AVRCPLD的通信。因此写了一个测试程序
    发表于 06-03 15:24 1023次阅读

    ATmega128单片机](熔丝修改后无法烧录程序情况)

    @ATmega128单片机AVRATmega128单片机](熔丝修改后无法烧录程序情况)本人
    发表于 11-15 09:36 26次下载
    <b class='flag-5'>ATmega128</b><b class='flag-5'>单片机</b>](熔丝修改后无法烧录<b class='flag-5'>程序</b>情况)

    Atmega128 AVR Studio熔丝位(Fuse)设置

    Atmega128 AVR Studio熔丝位(Fuse)设置
    发表于 11-15 16:21 36次下载
    <b class='flag-5'>Atmega128</b>  <b class='flag-5'>AVR</b> Studio熔丝位(Fuse)设置