2019-07-15 08:29发布
longrenwenzi 发表于 2018-5-4 16:47 问题描述的详细一点,不知道你在问什么呢。
PKZz 发表于 2018-5-4 23:13 uint speed=50; void write_fsm1(uchar add,uchar date) {
人中狼 发表于 2018-5-5 09:10 计算时最好能包括万位,除非确定数据在千位以内
PKZz 发表于 2018-5-5 10:41 改成了unsigned long int 还是在只能显示小与255的数,请问是不是51单片机只能计算8位的原因?16位数据是不是要分成2部分来计算?
最多设置5个标签!
uint speed=50;
void write_fsm1(uchar add,uchar date)
{
uchar qian,bai,shi,ge;
qian=date/1000;
bai=date%1000/100;
shi=date%1000%100/10;
ge=date%1000%100%10;
write_ml(0x80+add);
write_data(0x30+qian);
write_data(0x30+bai);
write_data(0x30+shi);
write_data(0x30+ge);}
write_fsm1(6,speed);
大概程序就这样写的,但是输入数据大于255就显示不出来是什么原因呢?求指教
void write_fsm1(uchar add,uchar date)的入口参数的数据类型要改为unsigned int
是的,只用到千位,主要是51单片机计算16位数据要分成两部分吗?
51单片机RAM是8位,因此计算的数据限于8位2进制数,最大的8位2进制数即255,要想计算出更大的数据就要区分高位和低位,对于16位数据,分为高8位和低8位,在程序编写时要将高8位和低8位分别存在两个寄存器中计算。最大的16位的2进制数是2的17次方减一,可以容易的表示千位甚至万位的10进制数。
一周热门 更多>