導航:首頁 > 操作系統 > 單片機計數器匯編

單片機計數器匯編

發布時間:2022-06-18 08:18:45

① 利用51單片機匯編實現計數器

p3.2 p3.3分別為中斷輸入,程序比較簡單,和C做差不多,區別在於
在匯編的中斷入口寫上跳轉語句跳到對應的中斷子程序
ORG 0003H
JMP INT0
ORP 0013H
JMP INT1

INT0://加操作

INT1://減操作

注意返回要用中斷返回RETI

② 求高手幫忙,利用51單片機匯編實現計數器

#include "regx52.h"
#define KEY_UP P3_6
#define KEY_DOWN P3_7
#define UP_KEY_RELEASED 0x1
#define DOWN_KEY_RELEASED 0x2
unsigned char code Tab[]={0x03,0x9F,0x25,0x0D,0x99,0x49,0x41,0x1F,0x01,0x09};
bit bUpPressed=0,bDownPressed=0;
void Delay(unsigned int uiCnt)
{
while(uiCnt>0)uiCnt--;
}

Display(unsigned char ucVar)
{
unsigned char ucTemp;
ucTemp=ucVar;
ucTemp=ucTemp/10;
P0=Tab[ucTemp];
P3_1=1;
Delay(100);
P3_1=0;
ucTemp=ucVar;
ucTemp%=10;
P0=Tab[ucTemp];
P3_0=1;
Delay(100);
P3_0=0;
}

unsigned char KeyProc()
{
if(KEY_UP==0)bUpPressed=1;
if(KEY_DOWN==0)bDownPressed=1;
if(bUpPressed==1&&KEY_UP==1){bUpPressed=0;return UP_KEY_RELEASED;}
if(bDownPressed==1&&KEY_DOWN==1){bDownPressed=0;return DOWN_KEY_RELEASED;}
}

main()
{
char ucTemp=12;
while(1)
{
if(KeyProc()==UP_KEY_RELEASED)
{
ucTemp++;
if(ucTemp>99)ucTemp=0;
}
if(KeyProc()==DOWN_KEY_RELEASED)
{
ucTemp--;
if(ucTemp<0)ucTemp=99;
}
Display(ucTemp);
}
}

程序已經調試,引腳定義跟你不一樣,自己改哈。

系統不讓回復,所以寫這了哈,

回cakoii兄:

其實,我也很不喜歡proteus這玩意,經常出現莫名錯誤,不過玩玩還是可以的。
第二,你真以為P0口的RP是多餘的嗎?我曾經做了個LED點陣試驗,不接RP,根本無法正確顯示,是一些隨機的點,別以你聰明,經驗是很重要的,不信你多看看別人的電路都是怎麼畫的,別人都是笨蛋嗎?
第三,P0的次序可以是任意的,這個跟你程序相關,你甚至可以這樣:a=p04,b=p02,b=p07...,你連這個都不懂,還作評論,你的思維已經被前輩給定死了,所以理解你。

第四,STC單片機有強上拉,相比之下,你的三極體及電阻就是脫了褲子放屁。

所以,這個世上很多人自以為是,悲哀!

到底是怎麼回事,諸位看官都有自己的判斷,不強求。

③ 單片機實現60秒計時器 用匯編語言

這是你學校的實驗儀嗎?這原理圖不全,沒有開關電路,兩個74374的選片電路也沒有,這寫不了程序的。

④ 用匯編語言寫一個單片機定時器/計數器的程序

1.以查詢方式工作,每計滿100個脈沖,則取反P1.0口線狀態。


ORG0000H
MOVTMOD,#06H
MOVTH0,#156
MOVTL0,#156
SETBTR0
LP:JNBTF0,LP
CPLP1.0
SJMPLP

END


2.以中斷方式工作,每計滿200個脈沖,則取反P1.0口線狀態。


ORG0000H
SJMPSTART
ORG000BH
CPLP1.0
RETI
START:
MOVTMOD,#06H
MOVTH0,#56
MOVTL0,#56
SETBTR0
MOVIE,#82H
SJMP$

END

⑤ 急!51單片機定時計數器實驗編程(匯編語言)

將計數值按二進制數在P1口驅動發光二極體顯示出來,到15秒後,計數值清零再從0開始計。
--這些發光二極體,是低電平發光,還是高電平發光?
下面的程序,適合於低電平發光:
ORG
0000H
LJMP
START
ORG
000BH
DEC
A
MOV
P1,
A
RETI
ORG
0030H
START:
MOV
TMOD,
#16H
MOV
TH0,
#255
MOV
TL0,
#255
SETB
TR0
SETB
TR1
MOV
IE,
#82H
LOOP:
MOV
A,
#255
MOV
P1,
A
MOV
R2,
#240
WAIT:
MOV
TH1,
#HIGH(65536-62500)
MOV
TL1,
#LOW(65536-62500)
JNB
TF1,
$
CLR
TF1
DJNZ
R2,
WAIT
SJMP
LOOP
END
如果是高電平發光,可以使用下面的程序:
ORG
0000H
LJMP
START
ORG
000BH
INC
A
MOV
P1,
A
RETI
ORG
0030H
START:
MOV
TMOD,
#16H
MOV
TH0,
#255
MOV
TL0,
#255
SETB
TR0
SETB
TR1
MOV
IE,
#82H
LOOP:
CLR
A
MOV
P1,
A
MOV
R2,
#240
WAIT:
MOV
TH1,
#HIGH(65536-62500)
MOV
TL1,
#LOW(65536-62500)
JNB
TF1,
$
CLR
TF1
DJNZ
R2,
WAIT
SJMP
LOOP
END

⑥ 傾家盪產求教 如何用單片機匯編語言編寫計數器程序

程序分開寫啊
首先是 單片機的初始化
然後是設置定時器的工作模式,計數初值,
在次,編寫顯示程序啊,用一個死循環來結束程序,通過不斷的定時器中斷來增加計數值,然後顯示到數碼管中
不過,整流電路應該在這個程序中不必使用吧,那個應該和電源想關的

⑦ 求單片機匯編程序:用定時器/計數器在P1.0口線上產生周期為500微秒,占空比為2:5的連續矩形波

;500us周期方波 ,占空比 2:5 。即高電平200us,低電平300us
ORG 0000H
AJMP START
ORG 000BH
AJMP T0INT
ORG 0030H
START: MOV SP,#60H
SETB EA
SETB ET0
MOV TMOD,#01 ;T0為工作方式1
CLR P1.0 ;先低電平
MOV TH0,#0FEH
MOV TL0,#0D4H ;300us 定時
SETB TR0;啟動定時
AJMP $
T0INT: CPL F0
CPL P1.0
JB F0,HIGH1
LOW0: MOV TH0,#0FEH
MOV TL0,#0D4H
RETI
HIGH1: MOV TH0,#0FFH
MOV TL0,#38H ;200us 定時
RETI
END

⑧ at89c51單片機計數器的使用,匯編語言,

P1,當做按鍵輸入,低電平有效;
P0,計數輸出,低電平發光。

KEYSTA EQU P1.0
KEYADD EQU P1.1
KEYSUB EQU P1.2

ORG 0000H
JMP MAIN
ORG 0030H
MAIN:
MOV R2, #255
LOOP:
MOV P0, R2
JB KEYSTA, LOOP1
CALL DELAY
JB KEYSTA, LOOP1
JNB KEYSTA, $
CPL F0
SJMP LOOP

LOOP1:
JNB F0, LOOP2
JB KEYADD, LOOP2
CALL DELAY
JB KEYADD, LOOP2
JNB KEYADD, $
DEC R2
SJMP LOOP

LOOP2:
JNB F0, LOOP
JB KEYSUB, LOOP
CALL DELAY
JB KEYSUB, LOOP
JNB KEYSUB, $
INC R2
SJMP LOOP

DELAY:
MOV R6, #20
DJNZ R7, $
DJNZ R6, $ - 2
RET
END

試驗成功。

⑨ 單片機匯編計數器有如下語句求解

簡單的說,這段代碼的意圖應該是:把定時器T0的16位初值移到內部工作寄存器並轉換成相應的BCD碼(一般用於送顯),結果保存在R4、R5、R6
ps:DA指令必須跟在ADD或ADDC後才起作用,對每4位進行BCD調整。因為4位16進制數(即16位二進制,具體到這段代碼就是TH0和TL0的內容)轉換成十進制的值最大為65535(其中每位10進制數用4位BCD碼來保存,5位數就要用20位,但是存儲器以位元組為單位組織,因此需要3位元組——24位),所以至少需要3個位元組(即代碼中的R4~6)才能完成保存其十進制值的轉換結果。 把這段代碼中的R4、R5、R6的內容直接送外部帶BCD解碼的數碼管(或高低4位分離後送全編碼的數碼管)就可以直接顯示定時器T0的十進制初值。

呵呵,樓主把左移當做乘2來理解也可以,但是這段代碼的意圖比較明顯,只是為了移位和BCD轉碼……

⑩ MCS-51單片機,利用定時計數器設計一個程序,匯編語言,最好有注釋,很簡單的就可以

ORG
0000H
JMP
BEGIN
ORG
0030H
TABLE:
;
共陰極數碼管顯示代碼表
DB
3FH,06H,5BH,4FH,66H
;01234
DB
6DH,7DH,07H,7FH,6fh
;56789
DELAY:
MOV
R5,#20
LOOP4:
MOV
R6,#50H
;延時20X20ms
LOOP5:
MOV
R7,#100
DJNZ
R7,$
DJNZ
R6,LOOP5
DJNZ
R5,LOOP4
RET
;---------------------------------------
BEGIN:
MOV
P2,#0FFH
;P2口置高電平,准備接收信號
MOV
R4,#0
MOV
A,R4
;R4位標志值送A寄存器
AGAIN:
MOV
DPTR,#TABLE
MOVC
A,@A+DPTR
MOV
P1,A
LOOP1:
MOV
A,P3
;
接收p3口的搶答信號
CPL
A
JZ
LOOP1
LOOP2:
RRC
A
;有人搶答信號則逐次移動判斷哪一位搶答
INC
R4
JNC
LOOP2
;********************
MOV
A,R4
MOVC
A,@A+DPTR
;找到相應位顯示代碼
MOV
P1,A
LEDDIS:
MOV
A,#0FFH
CLR
C
LEDDIS1:
RLC
A
DJNZ
R4,LEDDIS1
MOV
P0,A
LOOP3:
JNB
P2.2,BEGIN
;若主持人按下復位信號鍵,則轉向主程序
CPL
P2.0
;若沒按復位信號鍵,則通過p2.2口給出高低信號驅動蜂鳴器
LCALL
DELAY
;調用延時子程序
SJMP
LOOP3
;p2.2口反復間隔0.4s變化,驅動蜂鳴器
END

閱讀全文

與單片機計數器匯編相關的資料

熱點內容
思科路由器命令手冊 瀏覽:26
android獲得當前activity 瀏覽:831
python入門迷宮 瀏覽:69
Python打折代碼不含商品 瀏覽:220
把多個Word合成一個pdf 瀏覽:356
aes演算法描述 瀏覽:899
新手機壓縮包在哪 瀏覽:781
java抽獎程序源碼 瀏覽:700
汽車壓縮機又叫 瀏覽:95
android讀取data文件 瀏覽:874
紅旗智聯app怎麼跟h5車子連接 瀏覽:139
材料化學pdf 瀏覽:114
伺服器機房都有什麼東西 瀏覽:370
最近長陰短柱量能副圖指標源碼 瀏覽:647
python字元串去除後四位 瀏覽:167
捷速pdf編輯器破解版 瀏覽:726
大帶寬伺服器怎麼租 瀏覽:299
籃球程序員單身難嗎 瀏覽:877
一接到命令就 瀏覽:488
挖幣伺服器是什麼 瀏覽:524