51 单片机编程:双路计数器详解.doc

上传人:白大夫 文档编号:3244744 上传时间:2019-08-05 格式:DOC 页数:7 大小:29KB
返回 下载 相关 举报
51 单片机编程:双路计数器详解.doc_第1页
第1页 / 共7页
亲,该文档总共7页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《51 单片机编程:双路计数器详解.doc》由会员分享,可在线阅读,更多相关《51 单片机编程:双路计数器详解.doc(7页珍藏版)》请在三一文库上搜索。

1、51 单片机编程:双路计数器详解利用 51 单片机构成计数器,计数的上限,做的大一些,也不难,几千几万都可以。下面的电路,小了一点,是个两路两位的计数器。用来记录乒乓球比赛,还算可以,用于篮球比赛,分数超过 99,这个电路就不够用了。电路图中,用的是共阳数码管;还设置了六个按键,用途,都已经标出。用 C 语言编写驱动程序,是比较简单的,全部代码如下:#includereg51.hunsigned char n1, n2;/-void delay(unsigned int i) /1ms延时程序unsigned char j;while(i-) for(j = 0; j 115; j+);/-v

2、oid disp(void)unsigned char code SEG = 0xc0, 0xf9, 0xa4, 0xb0, 0x99, /0-40x92, 0x82, 0xf8, 0x80, 0x90;/5-9P0 = SEGn1 / 10; P1 = 1; delay(2); P1 = 0;P0 = SEGn1 % 10; P1 = 2; delay(2); P1 = 0;P0 = SEGn2 / 10; P1 = 4; delay(2); P1 = 0;P0 = SEGn2 % 10; P1 = 8; delay(2); P1 = 0;/-void main(void)unsigned

3、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 =

4、 n2 = 0;else if (k = 32) t = n1; n1 = n2; n2 = t; /-是不是很简单?用汇编语言来编程,就显得长多了。和上述 C 语言功能相同的汇编语言程序,全部代码如下:ORG 0000HJMP MAINORG 0030H;-MAIN:CALL DISPMOV A, P2CJNE A, #0FFH, KEYCLR 00HJMP MAIN;-KEY:JNB 00H, A_ADD1JMP MAIN;-A_ADD1:SETB 00HJB P2.0, A_SUB1MOV A, R0ADD A, #01HDA AMOV R0, AJMP MAIN;-A_SUB1:JB

5、P2.1, B_ADD1MOV A, R0ADD A, #99HDA AMOV R0, AJMP MAIN;-B_ADD1:JB P2.2, B_SUB1MOV A, R1ADD A, #01HDA AMOV R1, AJMP MAIN;-B_SUB1:JB P2.3, CLR_0MOV A, R1ADD A, #99HDA AMOV R1, AJMP MAIN;-CLR_0:JB P2.4, EXCHMOV R0, #00HMOV R1, #00HJMP MAIN;-EXCH:JB P2.5, END_KMOV A, R0XCH A, R1MOV R0, AJMP MAINEND_K:CLR

6、 00HJMP MAIN;-DISP:MOV DPTR, #BGMOV A, R0SWAP AANL A, #0FHMOVC A, A + DPTRMOV P0, ASETB P1.0CALL DELAYCLR P1.0;-MOV A, R0ANL A, #0FHMOVC A, A + DPTRMOV P0, ASETB P1.1CALL DELAYCLR P1.1;-MOV A, R1SWAP AANL A, #0FHMOVC A, A + DPTRMOV P0, ASETB P1.2CALL DELAYCLR P1.2;-MOV A, R1ANL A, #0FHMOVC A, A + DPTRMOV P0, ASETB P1.3CALL DELAYCLR P1.3RET;-DELAY:DJNZ R7, $DJNZ R7, $DJNZ R7, $DJNZ R7, $RET;-BG:DB 0C0H,0F9H,0A4H,0B0H, 99HDB 92H, 82H,0F8H, 80H, 90H;-END汇编语言的程序,看起来,比 C 语言的程序,长了不少,但是,编译后生成的机器码,却少于 C 程序。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1