微控制器程式設計求教,微控制器程式設計問題求教

2022-07-07 19:42:17 字數 3533 閱讀 5386

1樓:朝酒晚舞

好奇心較強,把兩個程式都測試了一下。

做而論道的匯程式設計序,在自動滅燈之後,再按下按鍵,可以使燈重新開啟;

gaplee 的c程式,自動滅燈之後,再按下按鍵,燈還是滅的,必須再按一下,燈才亮。

按兩下,燈才亮,恐怕不符合題目的要求。

做而論道的匯程式設計序,10秒的亮燈時間,誤差不足11毫秒;

gaplee 的c程式,10秒的亮燈時間,誤差為35.2毫秒。

gaplee 雖然使用了定時器,但是總的定時誤差,是做而論道的誤差的三倍。

可憐的定時器!

這兩句,gaplee 寫錯了一行:

th0=0x3c;

th1=0xb0;

gaplee 的誤差較大,主要就是這個原因。

做而論道的匯程式設計序,占用rom空間44位元組;

gaplee 的c程式,占用rom空間263位元組。

2樓:匿名使用者

你要c還是彙編

ps 哈哈,樓下2位比我積極多了,乙個寫了c乙個寫了彙編哈哈我還是掉到3樓好了 必須要說的是,兩位的定時都沒用定時器特別是c的哈,讓樓主自己算吖~

3樓:匿名使用者

;12m晶振

org 0000h

ajmp main

org 0003h

ajmp ex0int

org 000bh

ajmp t0int0

org 0030h

main: mov r0,#2

mov r1,#200

mov tmod,#01h

setb ea

setb ex0

setb et0

setb it0

setb tr0

mov th0,#3ch

mov tl0,#0bh

ajmp $

ex0int: djnz r0,e1

mov r0,#2

setb p1.0

ajmp e2

e1: clr p1.0

e2: reti

t0int0: mov th0,#3ch

mov tl0,#0bh

djnz r1,rt

mov r1,#200

setb p1.0

mov r0,#2

rt: reti

end來晚了

4樓:無線電_劉

org 0000h

ljmp main

org 0003h

ljmp inti

org 0030h

main: mov sp,#60h

setb ex0

setb ea

setb it0

jb p1.0,$

lcall delay

setb p1.0

ljmp $

inti: cpl p1.0

reti

delay: mov r7,#80

d1: mov r6,#250

d2: mov r5,#250

djnz r5,$

djnz r6,d2

djnz r7,d1

retend

微控制器程式設計問題求教

5樓:匿名使用者

1mov a, #0

clr c

subb a, r7

mov r7, a

mov a, #0

subb a, r6

mov r6, a

2clr c

mov a, 41h

rlc a

mov 41h, a

mov a, 40h

rlc a

mov 40h, a

3mov a, 33h

add a, 43h

da a

mov 37h, a

mov a, 31h

addc a, 42h

da a

mov 36h, a...

6樓:君憶塵

哎,這個程式書上多大是啊,第二個問題的話,二進位制乘法可以用移位來實現的

7樓:匿名使用者

不知道你用的是 什麼微控制器,每種微控制器的指令都不盡相同,而且你要的是彙編的還是c++的**,你要思路還是**?

8樓:易濱爾謐

首先你要產生這些頻率可以用定時器中斷來實現,要精確就涉及到乙個計時值的計算了,要了解單指令週期是多少時間,那就看你的晶振是多少頻率,比如你的晶振是12m,那麼也就是計時一下要1us時間,那麼1000hz就可以用1000下計時來輸出乙個週期,如果是50%占空比,那麼就是500下計數跳變一次,記得這個計數器是加計數的,1000或500下要溢位中斷,那麼計數初值應該是65536-1000或500,其他的頻率也可以一樣處理,可能頻率低了有一定的問題,就是擠滿乙個計數器也足以達到1hz的頻率,那麼就可以通過軟體的技術或乙個定時器的溢位去作為另乙個計數器的時鐘來實現1hz的輸出,試試吧,遇到問題再說

求大神教微控制器程式設計

9樓:匿名使用者

仔細看你的加減判斷,應該加時=255便置0,減時=0便置255,你全搞反了。另外對於8位無符號整數,此判別不要一樣能實現同樣功能。

10樓:做而論道

沒有錯。

樓主怎麼說有錯?

51微控制器最簡單的c語言程式設計求教

11樓:匿名使用者

你把裡面的數字轉換成二進位制,比如table[0]=0x3f=00111111b;

由於你這個是共陰極數碼管,高電平有效,所以寫一的地方對應的led都點亮 至於那七根數碼管以及乙個小數點和二進位制位數對應關係你可以上網上查一下,簡單的說小數點也就是dp是最高位,其他的那七根數碼管從最上面那個開始順時針一共是六根從bit(0)到bit(5),最後橫著那根是bit(6)。希望能幫到你。至於你說的temp對應p2口,得有硬體圖才可以知道有什麼作用。

12樓:曾危

table 為一維陣列已賦值

temp=temp<<1 temp先向左位移一位再賦給temp

13樓:郎夢玉狄朝

請問為什麼開頭要定義unsignedchar型別呢,不是可以用unsignedint代替嗎??

在微控制器中char型別的資料有什麼作用呢??

我想說的是,微控制器不是通用pc機

雖然說現在的微控制器內部的ram越來越大但是比起電腦裡還是有限的,unsignedchar是可以用unsignedint代替,但是這樣占用的位元組數太多了。

字元型的1個位元組長,而整型是2個位元組長。

微控制器的char型和c裡面的不太一樣,

因為你用的52是8位的微控制器,而char型是8位,所以操作方便。

歡迎追問

不會,識別int型的低八位

微控制器程式設計學習步驟,請問自學微控制器的步驟

學習copy微控制器入手的時候最好不bai從c開始,那樣的話對微控制器硬du件資源的理解zhi會受到限制 和影響,還是先學彙編dao較好。推薦兩本書 mcs 51 96系列微控制器原理及應用 51微控制器c語言完全手冊 先看前一本,再學後一本。至於c跟普通c差不多,只是為了包含微控制器的硬體定義 資...

微控制器,sbit什麼意思,微控制器C程式設計sbit指令是什麼意思

sbit是c51擴充套件的變數型別,是定義特殊功能暫存器的位變數。典型應用是 sbit p0 1 p0 1 即定義p0 1為p0口的第2位,以便進行位操作。在c語言裡,如果直接寫p1.1,c編譯器並不能識別,而且p1.1也不是一個合法的c語言變數名,所以得給它另起一個名字,這裡起的名為p1 1,可是...

微控制器實現十進位制數減1的程式設計,求微控制器組合語言怎樣程式設計才能實現將乙個十六進製制數轉換為十進位制數

51微控制器的運算都 copy是十六進製制的,唯一的十進位制調整指令da a,也只能用在add addc指令之後,所以要做十進位制的減法運算,也必須轉換為加法運算,然後再做十進位制調整。十進位制減1運算程式clr cmov a,50h add a,99h a e9hda a a 49h mov b,...