51 微控制器問題,請給出必要的備註 20

發布 科技 2024-05-26
14個回答
  1. 匿名使用者2024-02-11

    void t0(void) 中斷 1 使用 0 使用定時器 0,using0 表示使用第乙個記憶體。

    th0=(65536-500)/256;定時器 0,固定高度,8 位,初始值,5 毫秒

    tl0=(65536-500)%256;定時器為0和低電平,8位的初始值設定為5ms

    出錯時*

    如果燈亮錯了,則汽車的燈不會亮起。

    bb++;if(bb==800) 5*800=4s,即恆陸曉4秒後,bb=0;

    alarmflag=~alarmflag;警報否定。

    if(alarmflag==1) 如果發出警報。

    p0_0=~p0_0;讓嘴邊的小燈亮還是關,就看眼前的節目了。

    aa++;if(aa==800) 5*800=4s,4秒後。

    aa=0;p0_1=~p0_1;讓嘴邊的小燈亮還是關,就看眼前的節目了。

    second3++;

    if(second3==6400) 32 秒後,重置。

    second3=0;

    hibitflag=0;

    errorflag=0;

    rightflag=0;

    cmpflag=0;

    p0_1=1;

    alarmflag=0;

    bb=0;aa=0;

    當它是正確的*

    如果正確。 p0_1=0;燈亮了。

    cc++;if(cc<1000) 需要多長時間才能得到響應,這取決於您之前的程式。

    okflag=1;

    else if(cc<2000) 如果該反應沒有出現; 還會有另一種反應,也取決於你面前的程式。

    okflag=0;

    否則這些都取決於你上面的程式,你不掛,我猜你要實現的功能是,,燈不亮

    errorflag=0;

    rightflag=0;

    hibitflag=0;

    cmpflag=0;

    p0_1=1;

    cc=0;oka=0;

    okb=0;

    okflag=0;

    p0_0=1;

    if(okflag==1)

    oka++;

    if(oka==2)

    oka=0;

    p0_0=~p0_0;

    elseokb++;

    if(okb==3)

    okb=0;

    p0_0=~p0_0;

  2. 匿名使用者2024-02-10

    org 0000h ;設定程式的起始位址 mov a, 20h ; 數字 20h,傳送到 AMOV 21h,A; a的內容傳送到21h,21h單位也是20h

    mov 22h,a ;a中的內容傳送到22h,22h單位也是20h

    mov 31h,a ;a的內容傳送到31h,31h單位也是20h

    aa:sjmp aa ;原位轉移、停止、碰撞結束; 結束。

    問題新增: MOV A, 77h

    MOV 40h,255 就足夠了。

  3. 匿名使用者2024-02-09

    org 0000h

    mov a,#20h;將即時號碼分配給 ACC

    mov 21h,a;將 A 的值分配給資料儲存單元 21HMov 22H,A; 將 A 的值分配給資料儲存單元 22HMov 31H,A; 將a的值分配給資料儲存單元31HAA:sjmp aa; 該計畫已暫停。

    補充的。 mov a,#77h

    mov 40h,0ffhend

  4. 匿名使用者2024-02-08

    如果每句話都做了適當的注釋,我認為 LZ 不會很好地理解它(不是諷刺,我是)。

    咱們大致說說整個過程,個人覺得這個程式應該是乙個大塊頭什麼的。

    首先,輸出0x0f P1埠,然後0x0f向左依次移動7次,每次在P1埠上輸出,7次後將輸出向左移動,P1埠的輸出向左移動7次後,輸出向右移動連續6次, 等等,,,。

  5. 匿名使用者2024-02-07

    翻譯起來很簡單,何必呢。

  6. 匿名使用者2024-02-06

    讀取前,SDA應設定為1,即SDA=1,否則如果為0則為低電平,而讀取外部資料時,即使為高電平,也會下拉為0

  7. 匿名使用者2024-02-05

    scl=0 應將時鐘拉低,使其具有上公升沿來鎖存資料,而 sda=1 是在讀取資料之前寫入 1。

  8. 匿名使用者2024-02-04

    如果您參考飛利浦 I2C 匯流排協議的內容,這些都很容易理解。

  9. 匿名使用者2024-02-03

    這是乙個從低階到高階的跳躍。

  10. 匿名使用者2024-02-02

    Clk Dina Dinb Clear 是你自己定義的,只有看原理圖才能知道它代表什麼功能。

    這四個句子的意思都是一樣的,clk dina dinb clear 代表別針。

    補充完,往樓下看,哈哈。

    ..樓上。

  11. 匿名使用者2024-02-01

    這四句話是巨集彙編語句,將 74ls164 的四個引腳連線到它,以後在程式中使用這四個引腳時,用 clk dina dinb clear 代替它們

  12. 匿名使用者2024-01-31

    你一定能夠理解這個程式的每一句話,不需要給你新增注釋,告訴你PWM的原理,通過與程式的比較,你就會理解它。

    你想用51來產生PWM來控制LED,首先需要確定PWM的週期T和占空比D,確定這些之後,就可以用定時器生成乙個時間參考T,比如定時器溢位n次的時間就是PWM高電平的時間, 則 D*T = N*T,同樣,您可以找出 PWM 低電平時間需要多少個時間基準測試 N'

    然後你可以編寫乙個程式,根據你的時間基準t初始化給定定時器的值,然後開啟定時器,定義乙個標誌位,根據標誌的狀態決定輸出是高還是低,假設定義flag=1時輸出為高, 使用乙個變數來記錄定時器中斷的次數,並讓記錄中斷次數的變數每次中斷+1,判斷這個變數的值在中斷程式中是否達到了n,如果達到高電平的時間,則將標誌改為0,輸出低電平,並將中斷變數的值記錄為零, 每次中斷時仍為+1,並根據flag=0的情況跳轉判斷記錄變數的值是否達到n'如果到了,則表示PWM的低電平就足夠了,然後更改flag=1,將輸出更改為高電平,並將變數的次數記錄為零,重新開始,依此類推,得到你想要的PWM波形。

  13. 匿名使用者2024-01-30

    不知道你想要什麼樣的評論,是定時器0,乙個工作在模式1的定時中斷程式,定時器的定時時間好像是500個機器週期,剩下的就是一些如果條件語句和標誌標誌判斷,p0埠反轉什麼的。

  14. 匿名使用者2024-01-29

    void t0(void) 中斷 1 使用 0 定時器 0 中斷入口。

    if(alarmflag==1)

    aa++;if(aa==800)

    second3++;

    if(second3==6400)

    另一種處理方式。

    else if(cc<2000)

    elseif(okflag==1)

    不然我不知道你的標誌是什麼意思,很難注釋,以後推薦,不要aa,bb什麼,alarmflag不是很直觀嗎?

相關回答
9個回答2024-05-26

這是正常的,因為光的開和關是由微控制器的低電平驅動的(從你的程式中可以看出),而微控制器給出的高低電平負載能力不是很強,也就是說,雖然到了電壓,但電流比較小, 當我們編寫程式時,我們編寫相同的情況。沒問題,別擔心。

16個回答2024-05-26

定時中斷,外部中斷?

10個回答2024-05-26

<符號表示左移,最高數字進入進位符號 C,即下面使用的 CY >>>More

11個回答2024-05-26

p 更大,你的 { } 沒有配對,或多或少是 1。

6個回答2024-05-26

在這種情況下,它取決於 sp,ret 等於 (sp) pch、sp-1 sp (sp) pcl、sp-1 sp >>>More