一乐电子

一乐电子百科

 找回密码
 请使用微信账号登录和注册会员

QQ登录

只需一步,快速开始

快捷登录

手机号码,快捷登录

搜索
12
返回列表 发新帖
楼主: c19856057
收起左侧

[avr] 求助大侠,avr程序数字拆分的问题

[复制链接]
发表于 2013-6-26 16:02 | 显示全部楼层
有点诡异,不知道实际硬件是不是也这样
发表于 2013-6-26 16:02 | 显示全部楼层
或者把显示函数写到拆分函数里面去试试看如何
 楼主| 发表于 2013-6-26 16:42 | 显示全部楼层
问题程序和仿真

12864_test.rar

54.13 KB, 下载次数: 1206, 下载积分: 一乐金币 -1

发表于 2013-6-26 22:39 | 显示全部楼层
本帖最后由 狗狗百里游 于 2013-6-26 22:41 编辑

你原来的代码
Device: atmega16

Program:    2354 bytes (14.4% Full)
(.text + .data + .bootloader)

Data:       1286 bytes (125.6% Full)
(.data + .bss + .noinit)


Build succeeded with 0 Warnings...


ram超标了125.6%,造成不可预料状态,删掉不用的字库变量就行了。
gcc编译的时候,代码大小超量,ram超量也是允许生成代码,但是运行会有不可预料状态的

c51的常量,到avr常量要改成progmem用法。pgm_read_byte(address),你弄懂progmem用法后,就不想用c51做字库了。

你的代码带有char跟int的混合运算,不符合代码规格的。


/*
swan=temp_data/100000;
wan=temp_data%100000/10000;
    qian=temp_data%10000/1000;
    bai=temp_data%1000/100 ;
    shi=temp_data%100/10;
ge=temp_data%10;
*/
swan=temp_data/100000%10;//unsigned int最高65536,已经溢出了,这一句不规范的
wan=temp_data/10000%10;
    qian=temp_data/1000%10;
    bai=temp_data/100%10 ;
    shi=temp_data/10%10;
ge=temp_data%10;

代码改一下,理论计算的时候不这么吃力....

弄懂【共寄体】的使用吧,这样个十百千万,秒分时日年,这种变量就好整理结构了。
12864_test_Yuki.rar (49.81 KB, 下载次数: 1207)



 楼主| 发表于 2013-6-27 18:12 | 显示全部楼层
狗狗百里游 发表于 2013-6-26 22:39
你原来的代码
Device: atmega16

感谢大神的指点!

本版积分规则

QQ|一淘宝店|手机版|商店|电子DIY套件|一乐电子 ( 粤ICP备09076165号 ) 公安备案粤公网安备 44522102000183号

GMT+8, 2024-5-18 11:42 , Processed in 0.050211 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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