1024手机基地看电影,午夜福利视频导航,国产精品福利在线一区,亚洲欧美日韩另类成人,在线观看午夜日本理论片,成年超爽免费网站,国产精品成人免费,精品动作一级毛片,成人免费观看网站,97精品伊人久久大香蕉

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 29743|回復: 11
收起左側

TMOD&=0x0f;TMOD|=0x01; 這兩句單片機代碼什么意思?

  [復制鏈接]
ID:263267 發表于 2018-1-1 21:50 | 顯示全部樓層 |閱讀模式
7黑幣
TMOD&=0x0f;   
  TMOD|=0x01;   

最佳答案

查看完整內容

TMOD是一個不能位尋址的寄存器,所以用此種方法賦值。 TMOD&=0x0f的意思是:TMOD=(TMOD&0x0f),&與運算的作用是“有0得0”,則這條語句,讓TMOD高四位清零,并保存低四位不變化。 TMOD|=0x01的意思是:TMOD=(TMOD|0x01),|或運算的作用是“有1得1”,則這條語句,讓TMOD低四位其它位不變,選擇定時器0工作方式為方式1,即16位定時器。
回復

使用道具 舉報

ID:164602 發表于 2018-1-1 21:50 | 顯示全部樓層
TMOD是一個不能位尋址的寄存器,所以用此種方法賦值。
TMOD&=0x0f的意思是:TMOD=(TMOD&0x0f),&與運算的作用是“有0得0”,則這條語句,讓TMOD高四位清零,并保存低四位不變化。
TMOD|=0x01的意思是:TMOD=(TMOD|0x01),|或運算的作用是“有1得1”,則這條語句,讓TMOD低四位其它位不變,選擇定時器0工作方式為方式1,即16位定時器。
回復

使用道具 舉報

ID:14237 發表于 2018-1-2 07:29 | 顯示全部樓層
按位與和按位或,這樣是為了不影響其他函數調用TMOD的其他功能。
回復

使用道具 舉報

ID:213173 發表于 2018-1-2 07:30 | 顯示全部樓層
你寫錯了,應該是:
        TMOD &= 0xF0;                //清除定時器0模式位
        TMOD |= 0x01;                //設置為定時器0模式
回復

使用道具 舉報

ID:269986 發表于 2018-1-2 09:25 來自觸屏版 | 顯示全部樓層
你那個是定時器的工作方式選擇,定時器在MCU中有兩個或者三個以上的定時器,主要用來定義定時器的工作方式,低四位呢是用來控制定時器0的工作方式的,高四位是用來定義定時器1的工作方式的,TMOD=0x11.就是0001 0001這樣的話,就是兩個定器一起定義了,兩個都用了,兩個定時器都為工作方式1
回復

使用道具 舉報

ID:266854 發表于 2018-1-2 10:34 | 顯示全部樓層
HC6800-ES-V2.0 發表于 2018-1-2 08:24
TMOD是一個不能位尋址的寄存器,所以用此種方法賦值。
TMOD&=0x0f的意思是:TMOD=(TMOD&0x0f),&與運算 ...

新手稍稍補充一下,0x是16進制標志,0xf0對應的二進制是1111 0000共8位,TMOD這些個寄存器都是8位的 ,也就是用這種方式來把寄存器的各個位置寫成你想要的數值(0或1)。
回復

使用道具 舉報

ID:268704 發表于 2018-1-2 13:12 | 顯示全部樓層
設置tmod控制字
回復

使用道具 舉報

ID:123289 發表于 2018-1-2 20:25 | 顯示全部樓層
查一下TMOD各個位的功能,就清楚其目的了。
也就知道還可以用其它方式來做這件事。
回復

使用道具 舉報

ID:263267 發表于 2018-1-5 21:09 | 顯示全部樓層
那和直接讓TMOD=0x01有什么區別;
回復

使用道具 舉報

ID:47286 發表于 2021-5-27 01:07 來自觸屏版 | 顯示全部樓層
進擊的蝸牛 發表于 2018-1-5 21:09
那和直接讓TMOD=0x01有什么區別;

結果一樣但那么做可靠 因為假設之前定義第7位是1即0x80 這里再=0x01 之前的設定就被清除了 那么最終TMOD就不是0x81 而是0x01 就錯了
回復

使用道具 舉報

ID:554500 發表于 2021-5-27 08:24 | 顯示全部樓層
遇到這種問題,首先你要先了解與運算和或運算到底怎么回事?
拿本子來驗算一下,要不然下次碰到類似的問題還是沒辦法解決。
要知道:“授人以魚,不如授之以漁”
回復

使用道具 舉報

ID:1093578 發表于 2023-9-22 23:06 | 顯示全部樓層
dzbj 發表于 2021-5-27 01:07
結果一樣但那么做可靠 因為假設之前定義第7位是1即0x80 這里再=0x01 之前的設定就被清除了 那么最終TMOD ...

其實很簡單,TMOD |=0x01  //(0000 0001) 只對最低位賦1,設置T0定時器為工作方式1,其他定時器的工作方式和以前一樣,不受影響。 如果是 TMOD=0x01,之前有其他定時器在工作,它的TMOD值就被清零了。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表