找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2809|回复: 7
收起左侧

程序有点不明白,请大神不吝赐教

[复制链接]
ID:54183 发表于 2013-9-12 12:11 | 显示全部楼层 |阅读模式
用定时器以间隔500MS6位数码管上依次显示0123….CDEF,重复。(我想请问的是为什么在主程序中的num1=-1,而不是=0;而且num1++,++num1两者效果是一样的)
#include<reg52.h.>
#define uchar unsigned char
sbit dula=P2^0;
sbit wela=P2^1;
uchar num,num1;
uchar code table[]={
0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8,
0x80,0x90,0x88,0x83,
0xc6,0xa1,0x84,0x8e};
void main()
{
        num1=0;
        wela=1;
        P1=0xed;
        wela=0;
        dula=1;
        P1=0xc0;
        dula=0;
        TMOD=0x01;
        TH0=(65536-50000)/256;
        TL0=(65536-50000)%256;
        EA=1;
        ET0=1;
        TR0=1;
        while(1)
        {
          if(num==10)
          {
                  num=0;
                ++num1;
                dula=1;
                P1=table[num1];
                dula=0;
                if(num1==15)
                        num1=-1;

          }
        }
}
void time0() interrupt 1
{
        TH0=(65536-50000)/256;
        TL0=(65536-50000)%256;
        num++;
}

回复

使用道具 举报

ID:54183 发表于 2013-9-13 18:59 | 显示全部楼层
游客 183.167.229.x 发表于 2013-9-13 14:30
这 里 num1 只 是 作 自 身+1 运 算,本 语 句 里 面 没 有 其 他 运 算 , 所 以 + + n u m 和 n u m + +  ...

但是num1++和++num1不是有差别的吗,一个是先加加,再赋值给P1,一个是先赋值,再加加,怎么会是一样的?抱歉,因为我是刚学单片机,可能问的问题有点。。。
回复

使用道具 举报

ID:7485 发表于 2013-9-14 08:06 | 显示全部楼层
在一个语句里面有有向其他变量赋值或计算时这样的复合语句,有先加后加的问题,但是你这个语句里面,仅仅有num1加1的操作,所以这一句执行完以后,不管是先加后加,都是num加1就没有什么区别了。

你再仔细体会一下
P 1 = t a b l e [ n u m 1 + + ] ;

P 1 = t a b l e [ ++n u m 1 ] ;


不过一般的情况下,num++和++num用在复合语句上的较多,这种情况下区别就明显了。
回复

使用道具 举报

ID:54183 发表于 2013-9-15 12:35 | 显示全部楼层
ahshmj 发表于 2013-9-14 08:06
在一个语句里面有有向其他变量赋值或计算时这样的复合语句,有先加后加的问题,但是你这个语句里面,仅仅有 ...

也就是说在 ++num1和num1++与其他语句的嵌套中,分开嵌套时两者是没区别的,主要区别在于其与其他语句的结合嵌套,请问是否是这样的?
回复

使用道具 举报

ID:7485 发表于 2013-9-16 11:06 | 显示全部楼层
你理解的基本是对的。
你说是“嵌套”也可以,一般来说称为“复合语句”。
回复

使用道具 举报

ID:54183 发表于 2013-9-16 13:00 | 显示全部楼层
ahshmj 发表于 2013-9-16 11:06
你理解的基本是对的。
你说是“嵌套”也可以,一般来说称为“复合语句”。

万分感谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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