娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

51單片機編程:雙路計數器詳解

發布者:SerendipityDawn最新更新時間:2024-03-21 來源: elecfans關鍵字:51單片機  編程  雙路計數器 手機看文章 掃描二維碼
隨時隨地手機看文章

利用 51 單片機構成計數器,計數的上限,做的大一些,也不難,幾千幾萬都可以。

下面的電路,小了一點,是個兩路兩位的計數器。


用來記錄乒乓球比賽,還算可以,用于籃球比賽,分數超過 99,這個電路就不夠用了。


電路圖中,用的是共陽數碼管;還設置了六個按鍵,用途,都已經標出。

用 C 語言編寫驅動程序,是比較簡單的,全部代碼如下:

#include《reg51.h》

unsigned char n1, n2;

//-----------------------------------------------

void delay(unsigned int i) //1ms延時程序

{

unsigned char j;

while(i--) for(j = 0; j 《 115; j++);

}

//-----------------------------------------------

void disp(void)

{

unsigned char code SEG[] = {

0xc0, 0xf9, 0xa4, 0xb0, 0x99, //0-4

0x92, 0x82, 0xf8, 0x80, 0x90};//5-9

P0 = SEG[n1 / 10]; P1 = 1; delay(2); P1 = 0;

P0 = SEG[n1 % 10]; P1 = 2; delay(2); P1 = 0;

P0 = SEG[n2 / 10]; P1 = 4; delay(2); P1 = 0;

P0 = SEG[n2 % 10]; P1 = 8; delay(2); P1 = 0;

}

//-----------------------------------------------

void main(void)

{

unsigned char k, t;

n1 = n2 = 0;

while(1) {

disp();

if (~(P2 | 0xc0)) {

disp();

if (~(P2 | 0xc0)) {

k = ~(P2 | 0xc0);

while (~(P2 | 0xc0)) disp();

if (k == 1) {n1++; if (n1 == 100) n1 = 0;}

else if (k == 2) {n1--; if (n1 == -1) n1 = 99;}

else if (k == 4) {n2++; if (n2 == 100) n2 = 0;}

else if (k == 8) {n2--; if (n1 == -1) n2 = 99;}

else if (k == 16) {n1 = n2 = 0;}

else if (k == 32) {t = n1; n1 = n2; n2 = t;}

} } }

}

//-----------------------------------------------

是不是很簡單?

用匯編語言來編程,就顯得長多了。

和上述 C 語言功能相同的匯編語言程序,全部代碼如下:

ORG 0000H

JMP MAIN

ORG 0030H

;-------------------------

MAIN:

CALL DISP

MOV A, P2

CJNE A, #0FFH, KEY

CLR 00H

JMP MAIN

;-------------------------

KEY:

JNB 00H, A_ADD1

JMP MAIN

;----------------------

A_ADD1:

SETB 00H

JB P2.0, A_SUB1

MOV A, R0

ADD A, #01H

DA A

MOV R0, A

JMP MAIN

;----------------------

A_SUB1:

JB P2.1, B_ADD1

MOV A, R0

ADD A, #99H

DA A

MOV R0, A

JMP MAIN

;----------------------

B_ADD1:

JB P2.2, B_SUB1

MOV A, R1

ADD A, #01H

DA A

MOV R1, A

JMP MAIN

;----------------------

B_SUB1:

JB P2.3, CLR_0

MOV A, R1

ADD A, #99H

DA A

MOV R1, A

JMP MAIN

;----------------------

CLR_0:

JB P2.4, EXCH

MOV R0, #00H

MOV R1, #00H

JMP MAIN

;----------------------

EXCH:

JB P2.5, END_K

MOV A, R0

XCH A, R1

MOV R0, A

JMP MAIN

END_K:

CLR 00H

JMP MAIN

;-------------------------

DISP:

MOV DPTR, #BG

MOV A, R0

SWAP A

ANL A, #0FH

MOVC A, @A + DPTR

MOV P0, A

SETB P1.0

CALL DELAY

CLR P1.0

;----------------------

MOV A, R0

ANL A, #0FH

MOVC A, @A + DPTR

MOV P0, A

SETB P1.1

CALL DELAY

CLR P1.1

;----------------------

MOV A, R1

SWAP A

ANL A, #0FH

MOVC A, @A + DPTR

MOV P0, A

SETB P1.2

CALL DELAY

CLR P1.2

;----------------------

MOV A, R1

ANL A, #0FH

MOVC A, @A + DPTR

MOV P0, A

SETB P1.3

CALL DELAY

CLR P1.3

RET

;-------------------------

DELAY:

DJNZ R7, $

DJNZ R7, $

DJNZ R7, $

DJNZ R7, $

RET

;-------------------------

BG:

DB 0C0H,0F9H,0A4H,0B0H, 99H

DB 92H, 82H,0F8H, 80H, 90H

;-------------------------

END

匯編語言的程序,看起來,比 C 語言的程序,長了不少,但是,編譯后生成的機器碼,卻少于 C 程序。


關鍵字:51單片機  編程  雙路計數器 引用地址:51單片機編程:雙路計數器詳解

上一篇:基于AT89S51單片機的沖床控制器
下一篇:帶你使用51單片機做一款簡易的電子時鐘

推薦閱讀最新更新時間:2025-06-07 23:28

mcs-51單片機匯編語言條件轉移指令(8條)編程舉例
控制轉移 指令 用于控制程序的流向,所控制的范圍即為程序存儲器區間,MCS-51系列單片機的控制轉移 指令 相對豐富,有可對64kB程序空間地址單元進行訪問的長調用、長轉移指令,也有可對2kB字節進行訪問的絕對調用和絕對轉移指令,還有在一頁范圍內短相對轉移及其它無條件轉移指令,這些指令的執行一般都不會對標志位有影響。 . 條件轉移指令(8條) 條件轉移指令是指在滿足一定條件時進行相對轉移 JZ rel ; A=0,(PC)+ 2 + rel→(PC),累加器中的內容為0,則轉移到偏移量所指向的地址,否則程序往下執行 JNZ rel ; A≠0,(PC)+ 2 + rel→(PC),累加器中的內容不為0
[單片機]
51單片機驅動ADC0809片內RAM存轉換結果匯編程
;入口:通道1的模擬量, ;出口:片內RAM開辟一個數據區,用于存放A/D轉換結果, IN0 IN7的結果 ;分別存于30H 37H 8個單元中 AD0809: MOV R1,#01H ACALL AD0809_1 RET AD0809_1:MOV DPTR,# ;通道地址 MOV A,R1 ;送通道號 MOVX @DPTR,A;啟動轉換 WAIT: NOP JNB R1.7,WAIT ;P1.7為EOC信號 為1完成,0,轉換中。 MOVX A,@DPTR ;轉換完成 XCH A,R1 ADD A,#30H XCH A,R1 MOV @R1,A RET
[單片機]
51單片機驅動ads774匯編程
51單片機驅動模數轉換器ads774數據采集匯編程序,脈沖6061五個,BCD碼78~7B,段碼70~73,TIM0用7FH,看門狗P3.3 。 ORG 0 LJMP MAIN ORG 000BH TM1:LJMP TIM0 ORG 0100H MAIN:MOV SP,#30H MOV R0,#20H;20--7F=0 CLR A MOV R7,#60H INB1:MOV @R0,A INC R0 DJNZ R7,INB1 MOV IP,#02H MOV 7FH,#7 MOV TMOD,#11H MOV TL0,#0AEH MOV TH0,#74H SETB TR0 SETB ET0 CLR P3.3 ;WATCH DO
[單片機]
利用AT89S51單片機的T0、T1的定時計數器功能
利用AT89S51單片機的T0、T1的定時計數器功能,來完成對輸入的信號進行頻率計數,計數的頻率結果通過8位動態數碼管顯示出來。要求能夠對0-250KHZ的信號頻率進行準確計數,計數誤差不超過±1HZ。 1. 電路原理圖 2. 系統板上硬件連線 (1). 把“單片機系統”區域中的P0.0-P0.7與“動態數碼顯示”區域中的ABCDEFGH端口用8芯排線連接。 (2). 把“單片機系統”區域中的P2.0-P2.7與“動態數碼顯示”區域中的S1S2S3S4S5S6S7S8端口用8芯排線連接。 (3). 把“單片機系統”區域中的P3.4(T0)端子用導線連接到“頻率產生器”區域中的WAVE端子上。 3. 程序設
[單片機]
基于51單片機的直流電機調速實驗
一、實驗原理 PWM:即脈沖寬度調制,在具有慣性的系統中,可以通過對一系列脈沖的寬度進行調制,來等效的獲得所需要的模擬量,常用于電機調速,燈光亮度調節等。 該實驗和之前LED呼吸燈(定時器實現),實驗原理本質上是相同的,可以結合之前的文章進行理解學習,這里就不再贅述了。(下圖引用LED呼吸燈實驗) 二、關鍵代碼 void Timer0_Routine() interrupt 1 { TL0 = 0x66; TH0 = 0xFF; Counter++; Counter%=100; //計數值變化范圍限制到0~99 if(Counter Compare) //計數值小于比較值 { Motor
[單片機]
基于<font color='red'>51單片機</font>的直流電機調速實驗
89C51單片機實現的流水燈
/******************************************* Copyright: 2014.02.09.version1.0 File name: led.c Description: 自己做的流水燈89C51 Author: lxl Version: version1.0 Date: 2014.02.09 History: 無 *********************************************/ #include reg51.h /************************************************* Function: delay() Desc
[單片機]
8051單片機-模擬串口
傳統的8051系列單片機一般都配備一個串口,而STC89C52RC增強型單片機也不例外,只有一個串口可供使用,這樣就出問題了,假如當前單片機系統要求二個串口或多個串口進行同時通信,8051系列單片機只有一個串口可供通信就顯得十分尷尬,但是在實際的應用中,有兩種方法可以選擇。 方法1:使用能夠支持多串口通信的單片機,不過通過更換其他單片機來代替8051系列單片機,這樣就會直接導致成本的增加,優點就是編程簡單,而且通信穩定可靠。 方法2:在IO資源比較充足的情況下,可以通過IO來模擬串口的通信,雖然這樣會增加編程的難度,模擬串口的波特率會比真正的串口通信低一個層次,但是唯一優點就是成本上得到控制,而且通過不同的IO組合可以實現
[單片機]
80<font color='red'>51單片機</font>-模擬串口
基于51單片機的多功能電子鐘萬年歷仿真設計
仿真圖proteus7.8及以上 程序編譯器:keil 4/keil 5 編程語言:C語言 設計編號:S0053 1.主要功能: 基于51單片機的日期時間鬧鐘秒表倒計時多功能電子鐘萬年歷仿真設計 1、數碼管顯示當前日期,時間,可以通過按鍵修改日期時間; 2、設置鬧鐘時間,時間到播放音樂; 3、具有秒表功能; 4、具有倒計時功能; 5、具有整點報時功能,多少點蜂鳴器響多少次; 6、具備閏年判斷功能,設置日期的時候遵守正常大小月規律。 需注意仿真中51單片機芯片是通用的,AT89C51,AT89C52都是51單片機的具體型號,內核是兼容的。相同的原理圖里,無論stc還是at都一樣,引腳功能都是一樣的,程序也是一樣的,芯片可以替
[單片機]
基于<font color='red'>51單片機</font>的多功能電子鐘萬年歷仿真設計
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 固镇县| 涞水县| 贡嘎县| 科尔| 平顶山市| 永仁县| 新疆| 潼南县| 连南| 长海县| 赤壁市| 富平县| 石楼县| 南昌市| 建始县| 临颍县| 科技| 尉氏县| 合川市| 云南省| 海兴县| 景德镇市| 赤壁市| 凤阳县| 岳西县| 霍山县| 旌德县| 桃源县| 郓城县| 南溪县| 和静县| 班戈县| 宝应县| 涞水县| 岑溪市| 南漳县| 仙游县| 南汇区| 长子县| 宣威市| 鄂托克前旗|