手机版

单片机跟我学教程

发布时间:2024-11-28   来源:未知    
字号:

RT

深圳学林电子有限公司 单片机跟我学教程 版权所有

前言:单片机是一门实践性非常强的学科,为此我们突破传统思路,全面围绕单片机试验,从简单的流水灯开始, 逐步的带领大家从这些简单的几行或者10几行的程序,来熟悉和理解单片机的指令。 学指令 制作单片机教程之通过实验学指令...未经许可不得转载!

通过实验学指令之1把所有端口的同时置高置低,不通过实验学指令之2p1口3路流水灯理解2进制数断闪烁

与端口的关系

通过实验学指令之3单片机的加法:把52h+0fch 结通过实验学指令之4单片机的乘法:把ff*03h 结果果送p1口

通过实验学指令之5单片机的二进制加法 通过实验学指令之7学习单片机的逻辑运算 通过实验学指令之9循环移位指令的流水灯 通过实验学指令之11位操作指令的学习

送p1

通过实验学指令之6单片机的两位计数器

通过实验学指令之8进一步学习单片机的逻辑运算 通过实验学指令之10理解熟悉散转结构的程序 通过实验学指令之12比较指令的学习与cy位

通过实验学指令之13该程序的功能是小喇叭1khz通过实验学指令之14按p3.510次p1口led按照2信号

进制加1

通过实验学指令之15使用定时器实现长时间的延通过实验学指令之16中断的响应,p3.3的小喇叭时。

通过实验学指令之17p3.2的键盘数码管显示0

1khz输出

通过实验学指令之18中断的响应,两级中断嵌套 通过实验学指令之20p1口的led闪烁10次后停止子程序的嵌套

通过实验学指令之19顺序程序的

结构

(XL1000单片机

综合实验箱,全开放资源, USB通信。特别适合新手的开发箱!每套仅998元,TEL13714407535)

特别说明: 以下程序主要使用了流水灯, 按键, 喇叭, 数码管等资源,不仅适用于本公司各个试验套件。 初学者也可自制试验器材等。

RT

;该程序的功能是把所有端口的同时置高置低,不断闪烁。

;*************************************************************************** ;* (程序转载请著明出处 ,未声明可适应本站腾龙/isp开发套件/倚天版开发套件 *

,。 * ;* 制作(深圳学林电子有限公司)

;* tel:13714407535 石学军 制作(深圳学林电子有限公司)。 * ;*************************************************************************** ; 知识要点:理解单片机的运行过程, 理解延时程序, ORG 0000H;程序开始 LJMP MAIN; ORG 030H;

MAIN:MOV P0,#00H;把p0,p1,p2,p3全部置低电平 MOV P1,#00H; MOV P2,#00H; MOV P3,#00H;

ACALL DEL; 延时

MOV P0,#0FFH; 把p0,p1,p2,p3全部置高电平 MOV P1,#0FFH; MOV P2,#0FFH; MOV P3,#0FFH; ACALL DEL; 延时

AJMP MAIN; 重新开始

ORG 0200H; 从200h开始存放 DEL:MOV R5,#04H; 延时子程序 F3:MOV R6,#0FFH; F2:MOV R7,#0FFH; F1:

DJNZ R7,F1; DJNZ R6,F2; DJNZ R5,F3;

RET; 子程序结束 END

RT

程序在倚天版运行的状态1,全部不亮

程序在倚天版运行的状态2,全部亮 ;该程序的功能是p1口3路流水灯

;*************************************************************************** ;* (程序转载请著明出处 ,未声明可适应本站腾龙/isp开发套件/倚天版开发套件 * ;* 制作(深圳学林电子有限公司),。 *

;* tel:13714407535 石学军 制作(深圳学林电子有限公司)。 *

;*************************************************************************** ; 知识要点:理解2进制数与端口的关系 ORG 0000H;程序开始 LJMP MAIN; ORG 030H;

MAIN:MOV P1,#0DBH;11011011--零为亮 ACALL DEL;延时

MOV P1,#06DH;01101101 ACALL DEL;延时

MOV P1,#0B6H;10110110 ACALL DEL;延时 AJMP MAIN;

DEL: MOV R7,#0FFH;延时子程序 DEL1:MOV R6,#0FFH; DEL2: DJNZ R6,DEL2; DJNZ R7,DEL1; RET; END

RT

程序在倚天版运行的状态1,跑马灯的瞬间11011011(靠近

数码管的一边为高位,1为灭0为灭)

程序在倚天版运行的状态2,跑马灯的瞬间10110110(靠近数码管的一边为高位,1为灭0为灭)

RT

;该程序的功能是单片机的加法:把52h+0fch 结果送p1口

;*************************************************************************** ;* (程序转载请著明出处 ,未声明可适应本站腾龙/isp开发套件/倚天版开发套件 *

,。 * ;* 制作(深圳学林电子有限公司)

;* tel:13714407535 石学军 制作(深圳学林电子有限公司)。 *

;*************************************************************************** ;知识要点:理解2进制数的加法

;运行结果为p1.7到p1.0为亮灭亮亮灭灭灭亮就是二进制01001110 ;注意是从高向低排列,同时该数已经超过256, 所以进位cy=1 ORG 0000H;程序开始 LJMP MAIN; ORG 030H;

MAIN:ACALL DEL;

MOV A,#052H;寄存器a送52h MOV R0,#0FCH;寄存器r0送0fch ADD A,R0;相加 NOP;空操作

MOV P1,A;结果送p1口

DEL:MOV R7,#0FFH;;延时子程序 DEL1:MOV R6,#0FFH; DEL2:MOV R5,#01FH; DEL3:

DJNZ R5,DEL3; DJNZ R6,DEL2; DJNZ R7,DEL1;

RET;延时子程序返回 END

程序在倚天版运行的状态,运行结果为p1.7到p1.0为亮灭亮亮灭灭灭亮就是二进制01001110 (靠近数码管的一边为高位,1为灭0为灭)

RT

该程序的功能是单片机的乘法:把ff*03h 结果送p1口先送高8位再送低8位

;*************************************************************************** ;* (程序转载请著明出处 ,未声明可适应本站腾龙/isp开发套件/倚天版开发套件 *

,。 * ;* 制作(深圳学林电子有限公司)

;* tel:13714407535 石学军 制作(深圳学林电子有限公司)。 *

;*************************************************************************** ;知识要点:理解2进制数的乘法

;运行结果先输出00000010 ,然后输出11111101,就是1011111101换算后等于10进制765,就是两数相乘的结果

;注意是从高向低排列,同时该数已经超过256, 所以进位cy=1 ORG 0000H;程序开始 LJMP MAIN; ORG 030H;

MAIN:ACALL DEL;

MOV A,#0FFH;寄存器a送0ff MOV B,#03H;寄存器b送03h MUL AB; 相乘

MOV P1,b ;高8位输出结果是00000010 acall del

MOV P1,a;低8位输出结果是11111101 DEL:MOV R7,#0FFH;延时子程序 DEL1:MOV R6,#0FFH; DEL2:MOV R5,#01FH;

DEL3: DJNZ R5,DEL3; DJNZ R6,DEL2; DJNZ R7,DEL1; RET; END

RT

程序在倚天版运行的状态11111101

程序在倚天版运行的状态00000010 ;;该程序的功能是单片机的二进制加法

;*************************************************************************** ;* (程序转载请著明出处 ,未声明可适应本站腾龙/isp开发套件/倚天版开发套件 * ;* 制作(深圳学林电子有限公司),。 *

;* tel:13714407535 石学军 制作(深圳学林电子有限公司)。 *

;*************************************************************************** ;知识要点:理解2进制数的加法

;运行结果先输出00000000 (全亮),然后输出00000001,然后0000010,直到11111111 ;从P1口的8个灯看二进制的0,1,2,3......

ORG 0000H;程序开始 LJMP MAIN; ORG 030H;

MAIN:MOV A,#00H;先送0 PLAY:MOV P1,A;输出 ACALL DEL;延时 INC A;加1

AJMP PLAY;再输出

DEL:MOV R7,#0FFH;延时子程序 DEL1:MOV R6,#0FFH; DEL2:MOV R5,#01FH; DEL3: DJNZ R5,DEL3; DJNZ R6,DEL2; DJNZ R7,DEL1; RET; END

RT

程序在倚天版运行的状态00000000

程序在倚天版运行的状态00000010

RT

;8该程序的功能是进一步学习单片机的逻辑运算 ;

;*************************************************************************** ;* (程序转载请著明出处 ,未声明可适应本站腾龙/isp开发套件/倚天版开发套件 *

,。 * ;* 制作(深圳学林电子有限公司)

;* tel:13714407535 石学军 制作(深圳学林电子有限公司)。 *

;*************************************************************************** ;知识要点:理解熟悉单片机的逻辑运算

;运行结果:P1口输出结果为01100000,注意1为灭0为亮,从1.7到1.0排列

;ANL 0FH就是把数据与00001111相与那么遇1得原来的数遇0则为0,结果是前面的4位变0, 后面的4位保留

ORG 0000H;程序开始 LJMP MAIN; ORG 030H;

MAIN:MOV A,#59H;A中送59H这个数 01011001

ANL A,#0FH;59H和00001111相与就是保留后4位结果为1001 SWAP A;A中的高低字节交换结果为10010000

ANL P1,#0FH;P1口的内容与A相与就是清除高4位注意P1本来为11111111即FF此时变为00001111

ORL P1,A;P1的内容与相或 10010000和00001111相或结果为01100000 ACALL DEL;调用延时以便观察 AJMP MAIN;重新开始

DEL: MOV R7,#0FFH;延时子程序 DEL1:MOV R6,#0FFH; DEL2:MOV R5,#01FH; DEL3: DJNZ R5,DEL3; DJNZ R6,DEL2; DJNZ R7,DEL1;

RET; END

RT

运行结果:P1口输出结果为01100000,注意1为灭0为亮,从1.7到1.0排列 ;9该程序的功能是用循环移位指令的流水灯

;*************************************************************************** ;* (程序转载请著明出处 ,未声明可适应本站腾龙/isp开发套件/倚天版开发套件 * ;* 制作(深圳学林电子有限公司),。 *

;* tel:13714407535 石学军 制作(深圳学林电子有限公司)。 *

;*************************************************************************** ;知识要点:理解熟悉移位指令 ;运行结果:P1口8个灯循环点亮 ORG 0000H;程序开始 LJMP MAIN; ORG 030H;

MAIN:MOV R0,#08H;把8送入R0中,

MOV A,#0FEH;把FE送入A中,即11111110 PLAY:RR A;右移动1位 MOV P1,A;输出显示 ACALL DEL;延时

DJNZ R0,PLAY;一共移动8次 AJMP MAIN;重新开始 DEL: MOV R7,#0FH;延时子程序 DEL1:MOV R6,#0FFH; DEL2:MOV R5,#01FH; DEL3: DJNZ R5,DEL3; DJNZ R6,DEL2; DJNZ R7,DEL1;

RET; END

运行结果流水灯的瞬间(注意由于照相机的延时,看到的两个灯亮实际为一个灯亮)

RT

运行结果流水灯的瞬间(注意由于照相机的延时,看到的两个灯亮实际为一个灯亮) ;10该程序的功能是用按键计数器

;*************************************************************************** ;* (程序转载请著明出处 ,未声明可适应本站腾龙/isp开发套件/倚天版开发套件 * ;* 制作(深圳学林电子有限公司),。 *

;* tel:13714407535 石学军 制作(深圳学林电子有限公司)。 *

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

;运行结果:按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;

RT

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;

RT

ACALL DEL; AJMP ST;

PR8: MOV P0,#20H; ACALL DEL; AJMP ST;

PR9: MOV P0,#60H;

ACALL DEL; AJMP ST;

END

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

程序在倚天版运行的状态按键显示数字4 ;11该程序的功能是用按键控制灯

;***************************************************************************

RT

;* (程序转载请著明出处 ,未声明可适应本站腾龙/isp开发套件/倚天版开发套件 * ;* 制作(深圳学林电子有限公司),。 *

;* tel:13714407535 石学军 制作(深圳学林电子有限公司)。 *

;***************************************************************************http://

;知识要点:位操作指令的学习

;运行结果:按P3.2那么p1.0的灯亮

; p3.2接一个按键到地,p1.0 led. 程序把p3.2的状态送给p1.0

;位地址有多种表达方式,如直接地址p2.2 字节地址21h.5 寄存器acc.7位定义如rs0 伪指令定义如fi bit psw.1

ORG 0000H;程序开始 LJMP MAIN; ORG 030H; MAIN:

MOV C,P3.2; 把p3.2的状态送入c MOV P1.0,C;把c的状态送p1.0 ACALL DEL;调用延时 AJMP MAIN;反复循环 DEL: MOV R7,#0FFH;延时程序 DEL1: MOV R6,#0FFH; DEL2: DJNZ R6,DEL2; DJNZ R7,DEL1;

RET; END

程序在倚天版运行的状态按键数码管p10亮

RT

;12该程序的功能是比较两个数的大小

;*************************************************************************** ;* (程序转载请著明出处 ,未声明可适应本站腾龙/isp开发套件/倚天版开发套件 * ;* 制作(深圳学林电子有限公司),。 *

;* tel:13714407535 石学军 制作(深圳学林电子有限公司)。 *

;*************************************************************************** ;知识要点:比较指令的学习与cy位

; 开始初始化为ff. 大于fe,那么显示1. 如果用导线把p1.1,\...p1.7

;短路到地,p1将小于fe, 显示0 ,如果把p1.0短路到地p1=fe则继续检测无显示. ;该程序示例了比较指令. 同时有助于理解数的概念. ORG 0000H;程序开始 LJMP MAIN; ORG 030H;

MAIN: MOV P0,#0FFH;初始化p0 MOV r0,#0FeH;r0送立即数 clr p2.1;打开第一个数码管 MOV A,r0;r0送到a

CJNE A,P1,L1;pi与r0比较如相等则顺序如果不等则跳到l1.如大cy=1否则为0 ACALL DEL;调用延时以便观察 AJMP MAIN;重新开始

L1: JC L2;cy 如果为1则跳到l2否则顺序 mov p0,#28h;如果为0显示0 ACALL DEL;

AJMP MAIN;继续检测 L2: mov p0,#7eh;如果为1显示1 ACALL DEL;

AJMP MAIN;继续检测

DEL: MOV R7,#0FFH; 延时程序 DEL1: MOV R6,#0FFH; DEL2: DJNZ R6,DEL2; DJNZ R7,DEL1; RET; END

RT

程序在倚天版运

行的状态:开始初始化为ff. 大于fe,显示1.

程序在倚天版运行的状态:用导线把p10-p17任意一个接地数码管显示0

;13该程序的功能是小喇叭1khz信号

;*************************************************************************** ;* (程序转载请著明出处 ,未声明可适应本站腾龙/isp开发套件/倚天版开发套件 * ;* 制作(深圳学林电子有限公司),。 *

;* tel:13714407535 石学军 制作(深圳学林电子有限公司)。 *

;*************************************************************************** ;知识要点:定时器的应用学习定时器的应用

;1如果输出1khz 那么1个周期是500us交替出现.晶体12m, 每周期1us ;t1为方式0则m1m0=00h,使用定时器c/t=0 gate=0

;方式0为13位定时器,总时间为2的13次方微秒.=8192微秒,减去500微秒=7692

单片机跟我学教程.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
    ×
    二维码
    × 游客快捷下载通道(下载后可以自由复制和排版)
    VIP包月下载
    特价:29 元/月 原价:99元
    低至 0.3 元/份 每月下载150
    全站内容免费自由复制
    VIP包月下载
    特价:29 元/月 原价:99元
    低至 0.3 元/份 每月下载150
    全站内容免费自由复制
    注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
    × 常见问题(客服时间:周一到周五 9:30-18:00)