51测试网 单片机教程XL2000开发板 单片机学习 自制编程器 单片机资料 软件下载 电子技术产品介绍如何购买 进入论坛

51测试网(深圳学林电子有限公司)从0开始来学单片机...入门教程 

前言:单片机是一门实践性非常强的学科,为此我们突破传统思路,全面围绕单片机试验,从简单的流水灯开始, 逐步的带领大家从这些简单的几行或者10几行的程序,来熟悉和理解单片机的指令......未经允许禁止转载!如需转载,请著名出处,并保留网站联接!

按键计数器

;知识要点:理解熟悉散转结构的程序

;运行结果:按P3.2或3.3(低4位的任意一个键盘)第一位数码管加1直到9循环

; 开始显示0把P3送OFH,判断有没有按键,没有则反复循环,有按R0加1,如到10

;那么则清除, 最后根据R0的值散转.

 ORG 0000H;

        LJMP MAIN;程序开始

        ORG 030H;

MAIN:   MOV P0,#028H;数码管显示0

       clr p2.1    ;打开第一个数码管

        MOV R0,#00H;r0送0fh

ST:     MOV P3,#0FH;p3 送0fh

        MOV A,P3;

        CJNE A,#0FH,F1;如果p3口的值等于0f,那么按键没有按,

        ACALL DEL;

        AJMP ST;继续检测

F1:     ACALL DEL;

        CJNE A,#0FH,F2;再次判断有没有按

        AJMP ST;继续检测

F2:     INC R0;r0加1

        CJNE R0,#0AH,F3;如果r0等于10转道f3;OAH就是10, 到这里转移重新

        MOV R0,#00H;

F3:     MOV DPTR,#JPTAB;取地址

        MOV A,R0;

        CLR C;清除进位

        RLC A;a的内容右移

        JNC NADD;判断有没有进位, 有向下无到NDDA

        INC DPH;有进位DPH加1

NADD:   JMP @A+DPTR;根据A的内跳转到PR1,PR2....

JPTAB:  NOP;

        NOP;

        AJMP PR1;

        AJMP PR2;

        AJMP PR3;

        AJMP PR4;

        AJMP PR5;

        AJMP PR6;

        AJMP PR7;

        AJMP PR8;

        AJMP PR9;

DEL:    MOV R7,#04H;延时子程序

DEL1:   MOV R6,#0FFH;

DEL2:   MOV R5,#01FH;

DEL3:   DJNZ R5,DEL3;

        DJNZ R6,DEL2;

        DJNZ R7,DEL1;

        RET;

PR1:    MOV P0,#7eH;显示1

        ACALL DEL;

        AJMP ST;

PR2:    MOV P0,#0a2H;显示2   

        ACALL DEL;

        AJMP ST;

PR3:    MOV P0,#62H;显示3 

        ACALL DEL;

        AJMP ST;

PR4:    MOV P0,#74H;显示4

        ACALL DEL;

        AJMP ST;

PR5:    MOV P0,#61H;显示5 

        ACALL DEL;

        AJMP ST;

PR6:    MOV P0,#21H;   

        ACALL DEL;

        AJMP ST;

PR7:    MOV P0,#7aH;

        ACALL DEL;

        AJMP ST;

PR8:    MOV P0,#20H;     

        ACALL DEL;

        AJMP ST;

PR9:    MOV P0,#60H;      

        ACALL DEL;

        AJMP ST;

END

程序在倚天版运行的状态按键显示数字2

程序在倚天版运行的状态按键显示数字4