搜索
bottom↓
回复: 3

请教关于用meg32 做的逻辑分析仪的代码 部分 (采用论坛上的文件)

[复制链接]

出0入0汤圆

发表于 2009-3-3 10:50:22 | 显示全部楼层 |阅读模式
int main()
{
        uint8_t ram[2048];


        DATADIR = 0x00;                               
        DATAOUT = 0x00;                               
        LOCKDDR = (0x00|LE);               
        unlock;                                               

        UCSRA = 0x00;                               
        UCSRB = 0x18;                               
        UCSRC = 0x06;                               
        UBRRH = 0;
        UBRRL = 25;                                       

        while(1)
        {
                wait;                                       
                trig = UDR;
                wait;                                       
                trig_en = UDR;;
                wait;                                       
                fre_lo = UDR;
                wait;                                       
                fre_hi = UDR;
                wait;                                        //µÈ´ýÔ¤´¥·¢Êý¾Ý
                pre_trig = UDR;
                wait;                                        //µÈ´ýÔ¤´¥·¢Êý¾Ý
                pre_trig = UDR;
                wait;                                        //µÈ´ý¹¤×÷ģʽ
                mode = UDR;
                clrTXC;
                UDR = 'D';
                waitTXC;
                for(addr=0; addr<2048; addr++)
                        ram[addr] = 0;

                switch(fre_hi)
                {
                        case 2:
                                if(fre_lo == 0x04)
                                        sample_num = 0;
                                if(fre_lo == 0x0a)
                                        sample_num = 1;
                                if(fre_lo == 0x14)
                                        sample_num = 2;
                                if(fre_lo == 0x28)
                                        sample_num = 3;
                                if(fre_lo == 0x64)
                                        sample_num = 4;
                                if(fre_lo == 0xc8)
                                        sample_num = 5;
                                break;
                        case 3:
                                if(fre_lo == 0x32)
                                        sample_num = 6;
                                if(fre_lo == 0x7d)
                                        sample_num = 7;
                                if(fre_lo == 0xfa)
                                        sample_num = 8;
                                break;
                        case 4:
                                if(fre_lo == 0x7d)
                                        sample_num = 9;
                                if(fre_lo == 0xfa)
                                        sample_num = 10;
                                break;
                        case 5:
                                if(fre_lo == 0x7d)
                                        sample_num = 11;
                                if(fre_lo == 0xfa)
                                        sample_num = 12;
                                break;
                }
                addr = 0;
                switch(mode)
                {
                        case 0:                               
start:                        if(sample_num > 12)
                                        break;
                                addr = 0;
                                if(sample_num==0)                                                
                                {
                                        pre_trig = 8;                                               
                                        addr = 1;
                                        while(1)
                                        {
                                                lock;
                                                asm("nop");
                                                asm("nop");
                                                temp = DATAIN;
                                                asm("nop");
                                                asm("nop");
                                                unlock;
                                                asm("nop");
                                                asm("nop");
                                                asm("nop");
                                                asm("nop");
                                                if(trig == (temp | trig_en))
                                                        break;
                                        }
                                        asm("nop");
                                        asm("nop");
                                        ram[0] = temp;
                                        asm("nop");
                                        asm("nop");
                                        while(1)
                                        {
                                                lock;
                                                asm("nop");
                                                asm("nop");
                                                ram[addr] = DATAIN;
                                                asm("nop");
                                                asm("nop");
                                                unlock;
                                                asm("ldi r16,1");
                                                asm("ldi r17,0");
                                                asm("add r10,r16");
                                                asm("adc r11,r17");
                                                asm("nop");
                                                asm("nop");
                                                if(addr_hi==8)
                                                        break;
                                        }
                                }
                               
                addr_lo = 0x00;
                addr_hi = 8 - pre_trig;
                for(;addr<2048;addr++)
                {
                        clrTXC;
                        UDR=ram[addr];
                        waitTXC;
                }
        }
}

如果我用的是2us 采集的话就是只有这部分代码,  我现在有点不明白,看代码应该是先采集了2048 个数据后,然后在把这2048 个数据发送到 pc 端 处理的,,那在发送这2048 个数据的时候, 采集的线上还有其他的数据传输的话, 是不是就不能采集了呢 ?

源代码文件如下

点击此处下载 ourdev_423218.zip(文件大小:146K) (原文件名:meg32 分析仪.zip)

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

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

 楼主| 发表于 2009-3-3 11:36:50 | 显示全部楼层
按这种方式做的逻辑分析仪 能否连续的采集数据  呢 ?

出0入0汤圆

 楼主| 发表于 2009-3-3 16:35:42 | 显示全部楼层
还是没明白 ,,,

出0入0汤圆

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

本版积分规则

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

GMT+8, 2024-6-8 23:41

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

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