高级会员
主题
帖子
积分3019
阅读权限30
注册时间2011-2-14
最后登录1970-1-1
在线时间 小时
|
本人是单片机菜鸟,在写数字拆分的时候遇到了一些问题,在此向各位大侠求教。
以下是部分程序
#include <AVR/io.h>
#define uint unsigned int
#define uchar unsigned char
uint ge,shi,bai,qian,wan,swan;
……
略去中间一些无关程序
……
void data_chr(int temp_data) // 数值转换函数 { uint swan_temp,wan_temp,qian_temp,bai_temp,shi_temp,ge_temp; swan_temp=temp_data/100000; wan_temp=temp_data%100000/10000; qian_temp=temp_data%10000/1000; bai_temp=temp_data%1000/100 ; shi_temp=temp_data%100/10; ge_temp=temp_data%10; swan=swan_temp; wan=wan_temp; qian=qian_temp; bai=bai_temp; shi=shi_temp; ge=ge_temp; }
int main(void) { DDRC=0xff; DDRD=0xff; LCD_init(); //初始12864 uint k=1234; //测试数字分拆用的 while(1) { data_chr(k); //进行数字分拆 Show816(0,0,qian); //送到12864去显示 Show816(0,1,bai); Show816(0,2,shi); Show816(0,3,ge); }}
之前在51里面按照这样写是可以正确显示的,但是在avr里面程序不能正常显示,要么是乱码,要么是0.仿真结果如下:
但是把程序这样修改,之后是能正常显示,修改后如下:#include <avr/io.h>#define uint unsigned int#define uchar unsigned charint main(void) { DDRC=0xff; DDRD=0xff; LCD_init();//初始12864
uint ge,shi,bai,qian,wan,swan;
uint k=1234; swan=k/100000; wan=k%100000/10000; qian=k%10000/1000; bai=k%1000/100 ; shi=k%100/10; ge=k%10; while(1) { Show816(0,0,qian); Show816(0,1,bai); Show816(0,2,shi); Show816(0,3,ge); }}
请大侠们指教,是什么原因造成这样的结果,不胜感激!
如果将数字分拆写成函数的形式,方便调用,该如何写呢?烦请各位指导。
|
|