搜索
bottom↓
回复: 1

马老师,我这段代码编译能通过,但走到init_device()内部就死住了,为什么呢?

[复制链接]

出0入0汤圆

发表于 2008-2-27 09:43:02 | 显示全部楼层 |阅读模式
我是用仿真器单步走的,会死在port_init()内部,注释掉port_init(),又会死在init_device()里面,
编这个小程序是为了测试外挂的32KRAM,起先定义为0X1100到0X90FF。虽然程序本身也会用到变量,但缺省
应该是放在内部RAM的吧?不会和被测试的外部RAM冲突吧?有可能是堆栈的问题吗?
#include <iom128v.h>
#include <macros.h>

void port_init(void)
{
PORTA = 0x00;
DDRA  = 0x00;
PORTB = 0x00;
DDRB  = 0x00;
PORTC = 0x00; //m103 output only
DDRC  = 0x00;
PORTD = 0x00;
DDRD  = 0x00;
PORTE = 0x00;
DDRE  = 0x00;
PORTF = 0x00;
DDRF  = 0x00;
PORTG = 0x00;
DDRG  = 0x00;
}

//call this routine to initialize all peripherals
void init_devices(void)
{
//stop errant interrupts until set up
CLI(); //disable all interrupts
XDIV  = 0x00; //xtal divider
XMCRA = 0x00; //external memory

port_init();

MCUCR = 0xC0;
EICRA = 0x00; //extended ext ints
EICRB = 0x00; //extended ext ints
EIMSK = 0x00;
TIMSK = 0x00; //timer interrupt sources
ETIMSK = 0x00; //extended timer interrupt sources
SEI(); //re-enable interrupts
//all peripherals are now initialized
}


main()
{
        unsigned char OriChar = 0;
        unsigned char ReadChar = 0;
        
                unsigned char  * pChar = (unsigned char *)0x1100;
                unsigned char  * pChar2 = (unsigned char *)0x7fff;
                 
            init_devices();

        //AUXR = 0x00;
        //P10 = 0x00;
        PORTD = PORTD & 0xef;

        while(1)
        {
                 OriChar = OriChar + 7;
                 pChar = pChar + 1;
         
                 if (pChar > (unsigned char *)0x7fFF) pChar = (unsigned char *)0x1100;
                 
                 *pChar = OriChar;
                 ReadChar = *pChar;
                 if( OriChar == ReadChar)
                 {
                          
                          PORTE = PORTE | 0x10;
                 }
                 else
                 {
                          
                          PORTE = PORTE & 0xef;
                 }
        }
}

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2008-2-28 15:00:38 | 显示全部楼层
先检查你M128溶丝位配置工作方式为128方式吗?
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 09:30

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表