感谢各位,我自己已经解决了 |
Y_G_G 发表于 2021-7-27 21:24 还是错误的哦 |
开心就好hhhh 发表于 2021-7-28 11:22 还是错误的 |
这个程序,目前可能语法上没错误了,功能还是错误的,后面跑出来的结果应该还是错误的,形参定义有问题 |
|
开心就好hhhh 发表于 2021-7-28 11:22 我觉得还是会报错 |
你这个代码烧进去试了吗,正确吗?我怎么看着有点奇怪 |
Y_G_G 发表于 2021-7-27 21:24 受教了 |
不是回答了你了吗? 又开新贴子问同一个问题? 不要用#define #define uint unsigned int; #define uchar unsigned char; 改用 typedef typedef unsigned int uint; typedef unsigned char uchar; |
51heiqwer 发表于 2021-7-27 21:33 请问是上中下哪一个呢 |
#define 是宏定义 不用加分号 typedef 是类型重定义 得加分号 你可以用 #define uint unsigned int //不要添加分号 #define uchar unsigned char //不要添加分号 改用 typedef typedef unsigned int uint; //要添加分号 typedef unsigned char uchar; //要添加分号 |
xianshi(uchar bai,shi,ge); 这个函数你还带 uchar 干嘛 ,又不是声明 |
我帮你改好了,自己找一下有什么地方不一样的 这都是C语言的基础知识,我也是才开始几天的C语言,一般这种问题都是可以自己找到答案的 自己想尽脑子的去解决一个问题,那么你对这个问题的印象肯定是深刻的,对于自己的学习也有好处 网上"拿来主义"倒是快,估计下回还是会犯同样的错误 我就不告诉你哪里了,你自己找找 还有,编程要养成一个有注释的习惯,每个人写程序的写法都不一样,你倒是看明白,别人不一定能看明白的 #include<reg52.h> #define uint unsigned int #define uchar unsigned char uchar tt,num,ge,shi,bai; sbit wei=P2^7; sbit zi=P2^6; uchar code table[]={ 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71}; void init(); void xianshi(uchar bai,shi,ge); void delay(uint z); void main() { init(); while(1) { if(tt==20) { tt=0; num++; if(num==100) { num=0; } bai=num/100; shi=num%100/10; ge=num%10; } xianshi(bai,shi,ge); } } void delay(uint z) { uint x,y; for(x=110;x>0;x--) for(y=z;y>0;y--); } void init() { num=0; TMOD=0x01; TH0=(65535-50000)/256; TL0=(65535-50000)%256; EA=1; ET0=1; TR0=1; } void xianshi(uchar bai,shi,ge) { zi=1; P0=table[bai]; zi=0; P0=0xff; wei=1; P0=0xfe; wei=0; delay(1); zi=1; P0=table[shi]; zi=0; P0=0xff; wei=1; P0=0xfd; wei=0; delay(1); zi=1; P0=table[ge]; zi=0; P0=0xff; wei=1; P0=0xfb; wei=0; delay(1); } void timer0() interrupt 1 { TH0=(65535-50000)/256; TL0=(65535-50000)%256; tt++; } |
TH0之类能手工计算的,先算好。 |
应该要把编译错误的信息也上图,什么错误 定位在哪一行,大家如果这样肉眼直接看,效率太低了 |