-
這東西不就是乙個顯示16位數字的數碼管嗎? 提示您 16 次到達那裡,在您想按下停止按鈕後鬆開。 如果是這樣,則該過程可供參考:
初始 化*
ru bit ;定義檢測介面。
qing bit ;定義歸零介面。
shi bit ;定義顯示十位數字。
ge1 bit ;定義顯示數字。
org 0000h
jmp start
org 0030h
start:
mov r0,#0h
主要功能 *main:mov dptr, table
lcall display ;呼叫顯示子例程。
jnb ru,lop1 ;檢查介面上是否有訊號。
jnb qing,start ;檢查螢幕是否清除。
jmp main
lop1:inc r0 ;計數器由 1 新增。
jmp main
顯示子例程*
display:
mov a,r0
mov b,#10 ;分解 10 位顯示。
div ab ;分解個位數顯示。
mov r1,b
movc a,@a+dptr ;將顯示查詢表。
mov p0,a
clr shi
lcall delay
setb shi
mov a,r1
movc a,@a+dptr
mov p0,a
clr ge1
lcall delay
setb ge1
ret*10ms延遲*
delay:
mov r2,#
yan:mov r3,#
djnz r3,$
djnz r2,yan
rettable:
db 01h,02h,03h,04h,05h,06h,07h,08h,09hend
-
您要顯示多少個? 而且這個話題很簡單,你自己想想。
-
說實話,用完C之後,我真的不想看一本20多行的彙編。
而且,哥哥沒有一句評論,這不是乙個好習慣。
-
這東西不就是乙個顯示16位數字的數碼管嗎? 提示您 16 次到達那裡,在您想按下停止按鈕後鬆開。 如果是這樣,則該過程可供參考:
初始 化*
ru bit ;定義檢測介面qing位; 定義歸零介面 shi 位; 定義並顯示 ge1 位的十位數字; 定義顯示個位數 org 0000h
jmp start
org 0030h
start:
mov r0,#0h
主要功能 *main:mov dptr, table
lcall display ;呼叫顯示子程式 jnb ru,lop1 ; 判斷介面是否有訊號jnb qing,啟動; 檢查是否清除JMP主
lop1:inc r0 ;計數器加乙個JMP主
顯示子例程*
display:
mov a,r0
mov b,#10 ;分解十個位顯示 div ab; 分解個位數顯示 MOV R1,B
movc a,@a+dptr ;查詢表顯示 MOV P0,A
clr shi
lcall delay
setb shi
mov a,r1
movc a,@a+dptr
mov p0,a
clr ge1
lcall delay
setb ge1
ret*10ms延遲*
delay:
mov r2,#
yan:mov r3,#
djnz r3,$
djnz r2,yan
rettable:
db 01h,02h,03h,04h,05h,06h,07h,08h,09hend
-
我有現成的產品。
兩位數字,根據流水線上的產品數量,自動加一,加到20,自動清零;
兩位數字清零後,將自動將另外一位四位數字加一。
以上可以理解為電流輸出;
此外,還有幾組數字顯示,可以設定每日配額,顯示當前差值等。
-
我沒有時間寫程式。
這裡有 2 個想法給你。
1:用水晶震動,內部時鐘做 很好 2:這個通用的簡單程式 在網際網絡上搜尋很多 百度谷歌的什麼很好做。
-
加200分,有人可以寫,沒人寫,我給你寫。
-
您可以將計數訊號連線到外部中斷IO埠,並在外部中斷的中斷服務功能中新增以下語句:
static int count=0;
count++;
-
61 MCU我幫不了你,如果是51 MCU,做這個設計沒問題,來找我也沒關係。
-
存在很多問題,主要是漢字使用錯誤。
include 匯入標頭檔案。
unsigned b[10]=;編碼為 0-9。
void delay(void) 是乙個延遲子程式,是延遲丟失前的前 1 秒。
unsigned char i,j,k;
for(i=20;i>0;i--)
for(j=2;j>0;j--)
for(k=250;k>0;k--)
void inc cnt (void) 按 K1 鍵正數,從 0 到 99
unsigned char x, y, z;
for( x=0; x<10; x++)
void dec cnt( void ) 按 K2 鍵倒計時,可以從 99 數到 00
unsigned char x, y, z;
for(x=10;x>0;x--) 呼叫延遲子例程。
else }}
void main( void ) volts main 函式。
unsigned char key;
p2=0x00;
p0=0x3f;
for(;;
-
從51個微控制器RAM資料儲存器的分布圖可以看出,從80H-FFH位址單元(也是128位元組)為專用暫存器(SFR)單元,而從00H-7FH單元(共128位元組)的位址就是使用者資料RAM,即使用者資料單元,僅指使用者在程式設計時可以定義的暫存器, 一般用於計算、臨時儲存或轉換,如果沒有這樣的單元,那麼基本上微控制器就沒有作用了。
因此,作為微控制器的選擇,RAM的大小也直接決定了它的成本,不存在像房東說的那樣浪費現象,RAM的大小可以根據自己程式的複雜程度來決定。
51臺微控制器的RAM分布如下圖所示。
-
特殊暫存器不在 RAM 中,但與 RAM 統一定址,PC 指標在 CPU 中。
補充一點:從結構的角度來看,特殊暫存器和RAM不能放在一起,因為它們根本不是一回事。 只是為了方便使用,統一定址。
CPU對RAM、特殊暫存器甚至您自己連線的外圍裝置都使用相同的定址方法,因此特殊暫存器和RAM的定址是統一的,以方便使用者。
作為使用者,您應該關心的是 RAM 到底有多大。
51微控制器的RAM是128位元組,只有80-FF那麼大,所以它的記憶體太大了,其他空閒的地方沒有RAM。 所以不會有浪費。
-
專用暫存器SFR在RAM中,位於上128位,真正能被使用者自由使用的RAM位於RAM的下128位(52,上128位也可以被使用者自由使用,但52用於訪問高128位的RAM, 它的區別在於定址,這裡就不討論了)。
使用者可以自由使用的RAM是供使用者儲存中間結果或臨時資料儲存的。
內部RAM的大小,對於相同結構的MCU來說,也決定了設計軟體中功能的複雜程度,而RAM相對較小,這就決定了功能不宜過於複雜。
當然,RAM也可以對外擴充套件,但其訪問速度遠低於內部RAM。
-
特殊暫存器怎麼可能位於RAM中,但高128byteRAM位址與特殊暫存器位址重疊,只能通過訪問方式來區分。 專用暫存器用於控制微控制器的內部和外部裝置,並通過內部匯流排連線到CPU。
RAM角色:
1.儲存一些程式變數(一些變數編譯器將它們儲存在r0、r1等暫存器中)。
2. 呼叫函式時堆疊儲存。
-
中斷意味著每隔一段時間進入乙個中斷,每次進入乙個中斷,距離 km++
p1=~distance_km;
首次執行距離 km++; 距離 km 變為 1,p1 = 距離 km; 1負值分配給P1埠,(數碼管為共陽極,因此輸入為0的埠發光二極體亮起,)1為1111 1110,即最低的發光二極體點亮。
第二次執行距離 km++; 距離 km 變為 2,p1 = 距離 km; 2 反值分配給P1埠,即1111 1101第二個發光二極體點亮,以此類推。
-
距離km有點倒置0001010原來變1110101 原來的LED限流電阻拉起0是有效的,這樣做的目的是使1有效亮起。
答:位定址區域位於資料儲存器中的 20F 和 2Fh 之間。 該區間內的暫存器可以進行位定址,並且可以進行位操作和位運算。 >>>More
MCU C語言程式設計入門課程難不多,說起來不好,首先要了解的是學習MCU C語言時要明白這兩樣東西是什麼? 微控制器的入門程式設計主要是學習C語言,其次是電路和程式語言。 >>>More
崩潰,可能是現場干擾太嚴重。 無論如何,甚至已經放棄了沒有內部程式儲存器和EEPROM的晶元。 究其原因,往往不是程式問題,而是板卡和PCB設計問題。 >>>More