找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2730|回復(fù): 8
收起左側(cè)

單片機(jī)定時(shí)器初始化寫法

[復(fù)制鏈接]
ID:1084208 發(fā)表于 2023-7-1 09:27 | 顯示全部樓層 |閱讀模式
請(qǐng)問TL1 = 0XDB
TH1 =0XFE


TL1 = (65535-800)》8
TH1 = (65535-800)
第一種寫法怎么理解,請(qǐng)大伙給我講講,我目前只會(huì)第二種
回復(fù)

使用道具 舉報(bào)

ID:213173 發(fā)表于 2023-7-1 11:34 | 顯示全部樓層
常見10進(jìn)制賦值寫法
TH1 =(65536-800)/256;
TL1 =(65536-800)%256;

轉(zhuǎn)換16進(jìn)制
65536-800=64736=0xFCE0

用16進(jìn)制賦值寫法
TH1 = 0xFC;//高8位
TL1 = 0xE0;//低8位
回復(fù)

使用道具 舉報(bào)

ID:883242 發(fā)表于 2023-7-1 13:19 | 顯示全部樓層
第一種寫法是人算的。

第二種寫法是讓編譯器去算。

兩種寫法生成的機(jī)器碼完全一樣,第二種對(duì)于人類來說,可讀性更高。
回復(fù)

使用道具 舉報(bào)

ID:584814 發(fā)表于 2023-7-5 08:31 | 顯示全部樓層
綜合一下樓上:
1、用10進(jìn)寫喜聞樂見:
高八位:TH1 = ( 65536 - 800 ) / 256 ;
低八位:TL1 = ( 65536 - 800 ) % 256;
2、利用高位溢出可寫成:
高八位:TH1 = ( 65536 - 800 )  / 256  ;
低八位:TL1 = ( 65536 - 800 ) ;
3、換個(gè)寫法就是:
高八位:TH1 = ( 65536 - 800 ) >> 8 ;
低八位:TL1 = ( 65536 - 800 ) ;
4:跳過減法運(yùn)算寫成:
高八位:TH1 = 64736 >> 8;
低八位:TL1 = 64736;
5、換成16進(jìn)制就是:
高八位:TH1 = 0xFCE0 >> 8 ;
低八位:TL1 = 0xFCE0 ;
5、減少運(yùn)算直接賦值:
高八位:TH1 = 0xFC ;
低八位:TL1 = 0xE0 ;  
怎么寫結(jié)果都一樣。感覺用1比較清楚,用5比較清爽
回復(fù)

使用道具 舉報(bào)

ID:69038 發(fā)表于 2023-7-5 09:10 | 顯示全部樓層
man1234567 發(fā)表于 2023-7-5 08:31
綜合一下樓上:
1、用10進(jìn)寫喜聞樂見:
高八位:TH1 = ( 65536 - 800 ) / 256 ;

把1做成宏,在5中直接調(diào)用。兩全齊美!
回復(fù)

使用道具 舉報(bào)

ID:1053359 發(fā)表于 2023-7-5 10:47 | 顯示全部樓層
TL1 = 0xDB 和 TH1 = 0xFE 是十六進(jìn)制表示的數(shù)值,它們對(duì)應(yīng)著特定的寄存器 TL1 和 TH1 的值。這些寄存器通常用于定時(shí)器操作。

第一種寫法 TL1 = 0xDB 使用了直接賦值的方式,將 TL1 寄存器的值設(shè)置為十六進(jìn)制數(shù) 0xDB,即十進(jìn)制的 219。同樣地,TH1 = 0xFE 將 TH1 寄存器的值設(shè)置為十六進(jìn)制數(shù) 0xFE,即十進(jìn)制的 254。

而第二種寫法 TL1 = (65535-800) >> 8 和 TH1 = (65535-800) 則是利用了十進(jìn)制數(shù)進(jìn)行計(jì)算并賦值。

首先,(65535-800) 會(huì)得到 64735,這是一個(gè)十進(jìn)制的數(shù)值。然后,(65535-800) >> 8 將這個(gè)數(shù)值右移 8 位,相當(dāng)于除以 256(2的8次方),丟棄了低 8 位的數(shù)值。這樣得到的結(jié)果是 253,即十進(jìn)制的 253。最后,該值被賦給 TL1 寄存器。

同樣地,(65535-800) 的結(jié)果作為十進(jìn)制數(shù)直接賦值給 TH1 寄存器,得到的結(jié)果是 64735,即十進(jìn)制的 64735。

需要注意的是,這兩種寫法實(shí)際上設(shè)置了相同的數(shù)值到 TL1 和 TH1 寄存器中,只是表達(dá)方式不同。第一種寫法直接使用十六進(jìn)制數(shù)賦值,而第二種寫法基于一個(gè)計(jì)算式來設(shè)置值。這兩種寫法在功能上是等效的
回復(fù)

使用道具 舉報(bào)

ID:149799 發(fā)表于 2023-8-3 07:34 | 顯示全部樓層
到底是65536-800還是65535-800,迷惑。
回復(fù)

使用道具 舉報(bào)

ID:1090458 發(fā)表于 2023-8-3 09:17 | 顯示全部樓層
王秋冬 發(fā)表于 2023-8-3 07:34
到底是65536-800還是65535-800,迷惑。

65535,不過兩個(gè)基本沒區(qū)別
回復(fù)

使用道具 舉報(bào)

ID:382454 發(fā)表于 2023-8-3 17:02 | 顯示全部樓層
找一個(gè)學(xué)習(xí)板最快
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表