#include<reg52.h> #define uint unsigned int #define uchar unsigned char sbit dula=P2^0; sbit wela=P2^1; uchar num; uchar code table[]={0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71}; void delayms(uint); void main() { wela=1; P0=0x0f; wela=0; while(1) { for(num=15; num>=0; num--) { dula=1; P0=table[num]; dula=0; delayms(500); } } } void delayms(uint xms) { uint i,j; for(i=xms; i>0; i--) for(j=110; j>0; j--); } 学了一个用数组让数码管循环显示0-f的程序,原本的for循环语句是这样的:for(num=0; num<16; num++),我想让它从f-0显示,改了一下,用proteus仿真,发现数码管从F显示到0后就无显示了,而我的理解是它应该停在显示0这个字符上,我是这样理解的,当num减到0时,表达式等于0的条件一直成立,所以for就一直循环执行大括号里的程序,num等于0对应该数组里的字符是0x3f,对应数码管0,所以我认为应该一直显示0才对,但实际上并不是,所以这点我不能理解,还请各位大神给指点迷津,谢谢!
|