3050311118 发表于 2013-5-18 18:53:13

TH1=TL1= -(FOSC/12/32/BAUD)那个负号啥意思哦?一直这样用但是都...

void InitUart()
{
        SCON = 0x5a;                        
        TMOD |= 0x20;                     
    TH1 = TL1 = -(FOSC/12/32/BAUD);   
    TR1 = 1;                           
}
一直都这样用但是不知道啥意思哦

ahuang227 发表于 2013-5-18 18:59:32

是不是0xFF-(a)的意思啊?

3050311118 发表于 2013-5-18 19:06:02

ahuang227 发表于 2013-5-18 18:59 static/image/common/back.gif
是不是0xFF-(a)的意思啊?

不知道啊 得研究下

ibichao 发表于 2013-5-18 18:53:14

负数在计算机里是用补码表示的,即原码的反码再加一,如果是8位的变量,-3在计算机里表示为:256-3 = 253。所以TH1 = TL1 = -(FOSC/12/32/BAUD)与TH1 = TL1 = 256-(FOSC/12/32/BAUD)等价。

huangdog 发表于 2013-5-18 20:41:55

负值不就是按补码来表示的吗~

绿茶山人 发表于 2013-5-29 14:59:09

ibichao 发表于 2013-5-18 20:18 static/image/common/back.gif
负数在计算机里是用补码表示的,即原码的反码再加一,如果是8位的变量,-3在计算机里表示为:256-3 = 253。 ...

正解!一般写的时候还是写成256-(FOSC/12/32/BAUD),到加(FOSC/12/32/BAUD)到256溢出,感觉要好理解一点。

myh_hh 发表于 2013-5-29 17:44:04

4、6楼正解!一般:256-(FOSC/12/32/BAUD)

woshiaokeman 发表于 2013-7-6 22:58:21

感觉这个东西就是计算波特率初值公式的变换转换出来的结果。
FOSC = 晶振
BAUD = 波特率
网上找点公式,然后转换一下应该就是结果了!

techbaby 发表于 2013-7-6 23:30:04

补码,前面几楼正解。

mii 发表于 2013-7-6 23:33:21

楼主一定是抄STC的程序了

a13736925316 发表于 2013-7-7 11:34:53

这个是类型的处理,   int i=-1(-1 的实际数据是 0XFFFF)char i=-1(0XFF)、-2(0XFE)、 -3(0XFD) 。。。。-128(0X80)

计算定时值的时候一般用
TH0 = (65536-1000)>>8;
TL0 = 65536-1000;
来表示,   

TH0 = (-1000)>>8;
TL0 = -1000;   结果是一样的

所得出的结果均可以在KEIL 仿真查看。

xingyuezh 发表于 2013-7-7 16:22:44

补码正解,具体数值要慢慢算

millwood0 发表于 2013-7-8 00:05:53

TH1 = TL1 = -(FOSC/12/32/BAUD); you can think of an incrementing timer as one that starts from a negative number and generates an interrupt when it reaches 0.

The code above essentially does that and it is fairly common for such code.

However,TH1 = TL1 = -...is almost surely wrong.

The typical implementation is this:TH1 = -(FOSC/12/32/BAUD) >> 8;
TL1 = -(FOSC/12/32/BAUD); or, in case you have TH1:TL1 next to each other and in the right order:T1 = -(...);ADCs frequently allow that.

lihuafu 发表于 2013-10-25 20:06:36

这个是AD显示的吧,那是不是要占用一个定时器呢~求解~~

marshallemon 发表于 2013-10-25 20:42:12

同意2楼
页: [1]
查看完整版本: TH1=TL1= -(FOSC/12/32/BAUD)那个负号啥意思哦?一直这样用但是都...