当前位置:文档之家› 51单片机 KEIL汇编嵌入C语言,程序防干扰设计,TIMER0作为软件清狗,TIMER2设置为串口波特率发生器

51单片机 KEIL汇编嵌入C语言,程序防干扰设计,TIMER0作为软件清狗,TIMER2设置为串口波特率发生器

51单片机 KEIL汇编嵌入C语言,程序防干扰设计,TIMER0作为软件清狗,TIMER2设置为串口波特率发生器
51单片机 KEIL汇编嵌入C语言,程序防干扰设计,TIMER0作为软件清狗,TIMER2设置为串口波特率发生器

第7讲51单片机汇编语言程序设计.

标题:第四部分汇编语言程序设计 教学目标与要求: 1、理解源程序、目标代码、编辑、汇编等含义 2、了解汇编过程 3、掌握伪指令的使用 4、掌握顺序结构、分支结构及循环结构程序的编写方法授课时数: 8学时 教学重点:伪指令的使用 教学内容及过程: 一、程序设计概念 1、汇编程序设计步骤: 分析题意; 资源分配; 程序流程图 编写程序 调试程序 2、程序编写规则: 结构清晰,易读、易于移植 占用存储空间少; 运行时间短; 程序的编制、调试及排错所需时间短; 3、汇编程序功能 汇编指令与机器码指令有一一对应的关系。 汇编程序是一种翻译程序,将源程序翻译成目标程序。 4、汇编程序的汇编过程 汇编有两种方法:手工汇编、机器汇编。 1、手工汇编:

第一次汇编:确定地址,翻译成各条机器码,字符标号原样写出; 第二次汇编:标号代真,将字符标号用所计算出的具体地址值或偏移量代换。 源程序地址 目标程序 第一次汇编第二次汇编 ORG 1000H START: MOV R0,BUFFER-1 1000 A82F A82F MOV R2,#00H 1002 7A00 7A00 MOV A,@R0 1004 E6 E6 MOV R3,A 1005 FB FB INC R3 1006 0B 0B SJMP NEXT 1007 80NEXT 8005 LOOP; INC R0 1009 08 08 CJNE @R0,#44H,NEXT 100A B644NEXT B64401 INC R2 100D 0A 0A NEXT: DJNZ R3,LOOP 100E DBLOOP DBF9 MOV RESULT,R2 1010 8A2A 8A2A SJMP $ 1012 80FE 80FE BUFFER DATA 30H RESULT DATA 2AH END 2、机器汇编 两次扫描过程。 第一次扫描:检查语法错误,确定符号名字; 建立使用的全部符号名字表; 每一符号名字后跟一对应值(地址或数)。 第二次扫描:是在第一次扫描基础上,将符号地址转换成真地址(代真);利用操作码表将助记符转换成相应的目标码。 二、伪指令 伪指令是告诉汇编程序,如何汇编源程序的指令。 伪指令既不控制机器的操作,也不能被汇编成机器代码,故称为伪指令。 1、起始地址伪指令ORG ORG addr16 用于规定目标程序段或数据块的起始地址,设置在程序开始处。 2、汇编结束伪指令END 告诉汇编程序,对源程序的汇编到此结束。一个程序中只出现一次,在末尾。

51单片机汇编程序范例

16位二进制数转换成BCD码的的快速算法-51单片机2010-02-18 00:43在做而论道上篇博文中,回答了一个16位二进制数转换成BCD码的问题,给出了一个网上广泛流传的经典转换程序。 程序可见: http: 32.html中的HEX2BCD子程序。 .说它经典,不仅是因为它已经流传已久,重要的是它的编程思路十分清晰,十分易于延伸推广。做而论道曾经利用它的思路,很容易的编写出了48位二进制数变换成16位BCD码的程序。 但是这个程序有个明显的缺点,就是执行时间太长,转换16位二进制数,就必须循环16遍,转换48位二进制数,就必须循环48遍。 上述的HEX2BCD子程序,虽然长度仅仅为26字节,执行时间却要用331个机器周期。.单片机系统多半是用于各种类型的控制场合,很多时候都是需要“争分夺秒”的,在低功耗系统设计中,也必须考虑因为运算时间长而增加系统耗电量的问题。 为了提高整机运行的速度,在多年前,做而论道就另外编写了一个转换程序,程序的长度为81字节,执行时间是81个机器周期,(这两个数字怎么这么巧!)执行时间仅仅是经典程序的!.近来,在网上发现了一个链接: ,也对这个经典转换程序进行了改进,话是说了不少,只是没有实质性的东西。这篇文章提到的程序,一直也没有找到,也难辩真假。 这篇文章好像是选自某个著名杂志,但是在术语的使用上,有着明显的漏洞,不像是专业人员的手笔。比如说文中提到的:

“使用51条指令代码,但执行这段程序却要耗费312个指令周期”,就是败笔。51条指令代码,真不知道说的是什么,指令周期是因各种机型和指令而异的,也不能表示确切的时间。 .下面说说做而论道的编程思路。;----------------------------------------------------------------------- ;已知16位二进制整数n以b15~b0表示,取值范围为0~65535。 ;那么可以写成: ; n = [b15 ~ b0] ;把16位数分解成高8位、低8位来写,也是常见的形式: ; n = [b15~b8] * 256 + [b7~b0] ;那么,写成下列形式,也就可以理解了: ; n = [b15~b12] * 4096 + [b11~b0] ;式中高4位[b15~b12]取值范围为0~15,代表了4096的个数; ;上式可以变形为: ; n = [b15~b12] * 4000 + {[b15~b12] * (100 - 4) + [b11~b0]} ;用x代表[b15~b12],有: ; n =x * 4000 + {x * (100 - 4) + [b11~b0]} ;即: ; n =4*x (千位) + x (百位) + [b11~b0] - 4*x ;写到这里,就可以看出一点BCD码变换的意思来了。 ;;上式中后面的位:

(最新版)基于51单片机汇编语言的数字钟课程设计报告含有闹钟万毕业论文

单片微型计算机课程设计报告 多功能电子数字钟 姓 名 学

教师 许伟敏 电气二班 林卫

目录 一:概述 (1) 二:设计基本原理简介 (2) 三:设计要求及说明 (3) 四:整体设计方案 (4) 系统硬件电路设计 4 系统软件总流程设计模块划分及分析5 6 五:单模块流程设计 (8) 各模块设计概述、流程图模块源程序集合及注释8 13 六:单模块软件测试 (23) 七:系统检测调试 (24) 硬件电路调试 软件部分烧写调试 八:系统优化及拓展 (26) 九:心得体会 (28)

单片微型计算机课程设计 一、概述 基于汇编语言的电子数字钟概述 课程设计题目:电子数字钟 应用知识简介: ● 51 单片机 单片机又称单片微控制器,它不是完成某一个逻辑功能 的芯片,而是把一个计算机系统集成到一个芯片上。作为嵌 入式系统控制核心的单片机具有其体积小、功能全、性价比高等诸多优点。51 系列单片机是国内目前应用最广泛的单片机之一,随着嵌入式系统、片上系统等概念的提出和普遍接受及应用,51 系列单片机的发展又进入了一个新的阶段。在今后很长一段时间内51 系列单片机仍将占据嵌入式系统产品的中低端市场。 ●汇编语言 汇编语言是一种面向机器的计算机低级编程语言,通常是为特定的计算机或系列计算机专门设计的。汇编语言保持了机器语言的优点,具有直接和简捷的特点,其代码具有效率高实时性强等优点。但是对于复杂的运算或大型程序,用汇编语言编写将非常耗时。汇编语言可以与高级语言配合使用,应用十分广泛。 ● ISP ISP(In-System Programming)在系统可编程, 是当今流行的单片机编程模式,指电路板上的空白元器 件可以编程写入最终用户代码,而不需要从电路板上取 下元器件。已经编程的器件也可以用ISP方式擦除或再 编程。本次课程设计便使用ISP方式,直接将编写好的 程序下载到连接好的单片机中进行调试。 选题 系统功能分析 硬件电路设计 整体流程设计 及模块划分 模块流程设计 模块编 码测试 系统合成调 试编译 下载调试(含硬件电路调试及软件烧写调试) 验收 完成总结报告课程设计流程图↑ 选题目的及设计思想简介: 课程设计是一次难得的对所学的知识进行实践的机会,我希望通过课程设计独立设计一个简单的系统从而达到强化课本知识并灵活运用的目的。电子数字钟是日常生活钟随处可见的简单系统。对电子数字钟的设计比较容易联系实际并进行拓展,在设计中我将力求尽可能跳出课本的样板,从现实生活中寻找设计原型和设计思路,争取有所突破。 如图所示便是我本次课程设计流程图,设计的整个过程运用自顶向下分析、自底向上实现的

51单片机实用汇编程序库(word)

51 单片机实用程序库 4.1 流水灯 程序介绍:利用P1 口通过一定延时轮流产生低电平 输出,以达到发光二极管轮流亮的效果。实际应用中例如:广告灯箱彩灯、霓虹灯闪烁。 程序实例(LAMP.ASM) ORG 0000H AJMP MAIN ORG 0030H MAIN: 9 MOV A,#00H MOV P1,A ;灭所有的灯 MOV A,#11111110B MAIN1: MOV P1,A ;开最左边的灯 ACALL DELAY ;延时 RL A ;将开的灯向右边移 AJMP MAIN ;循环 DELAY: MOV 30H,#0FFH D1: MOV 31H,#0FFH D2: DJNZ 31H,D2 DJNZ 30H,D1 RET END 4.2 方波输出 程序介绍:P1.0 口输出高电平,延时后再输出低电 平,循环输出产生方波。实际应用中例如:波形发生器。 程序实例(FAN.ASM): ORG 0000H MAIN: ;直接利用P1.0 口产生高低电平地形成方波////////////// ACALL DELAY SETB P1.0 ACALL DELAY 10 CLR P1.0 AJMP MAIN ;////////////////////////////////////////////////// DELAY: MOV R1,#0FFH DJNZ R1,$ RET

五、定时器功能实例 5.1 定时1 秒报警 程序介绍:定时器1 每隔1 秒钟将p1.o 的输出状态改变1 次,以达到定时报警的目的。实际应用例如:定时报警器。程序实例(DIN1.ASM): ORG 0000H AJMP MAIN ORG 000BH AJMP DIN0 ;定时器0 入口 MAIN: TFLA G EQU 34H ;时间秒标志,判是否到50 个 0.2 秒,即50*0.2=1 秒 MOV TMOD,#00000001B;定时器0 工作于方式 1 MOV TL0,#0AFH MOV TH0,#3CH ;设定时时间为0.05 秒,定时 20 次则一秒 11 SETB EA ;开总中断 SETB ET0 ;开定时器0 中断允许 SETB TR0 ;开定时0 运行 SETB P1.0 LOOP: AJMP LOOP DIN0: ;是否到一秒//////////////////////////////////////// INCC: INC TFLAG MOV A,TFLAG CJNE A,#20,RE MOV TFLAG,#00H CPL P1.0 ;////////////////////////////////////////////////// RE: MOV TL0,#0AFH MOV TH0,#3CH ;设定时时间为0.05 秒,定时 20 次则一秒 RETI END 5.2 频率输出公式 介绍:f=1/t s51 使用12M 晶振,一个周期是1 微秒使用定时器1 工作于方式0,最大值为65535,以产生200HZ 的频率为例: 200=1/t:推出t=0.005 秒,即5000 微秒,即一个高电

51单片机中的汇编语言与C语言.

51单片机中的汇编语言与 C 语言 C 语言, 更多的是为了掌握单片机的应用, C 语言是高效的应用程序开发工具, 与汇编语言比却不是开发高效应用程序的工具。就目前而言, 更多的是为了应用单片机, 开发应用程序, 更多的是强调开发效率, 而不是程序的运行效率 (相对而言。再就是应用程序对单片机内部资源的使用效率, 这在过去, 单片机内部资源紧缺的年代, 特别的强调, 现在已经不是特别重要了。所以, 大多数人都认为,只用 C 语言,就可以应对大多数单片机的应用开发了。 其实,汇编语言跟 C 语言在本质上一样的,只是语言形式不同而已,一个接近底层逻辑, 一个接近人类语言, 本质上都是对寄存器或存储器的读写操作而已。 汇编语言中,用 MOV 来回传送数据, C 语言里,用等号表示数据传送。汇编语言中,用 call 转去执行子过程程序, C 语言里,用个函数名调用子程序。汇编语言中,用 JMP 完成分支转移, C 语言里用 if 、 switch 、 while 、 for 来判断跳转。汇编语言跟 C 一样可以给寄存器指定命名,然后对定义的名称进行操作。汇编语言提供了对很多标志位的操作, C51根据需要也进行了改进, C 语言可以通过 #include给存储器命名来简化操作。 我觉得, C 语言是最接近汇编语言的一种高级语言, 要说不同, 也许具有大量函数的函数库,是 C 语言与汇编语言的最大区别,也是 C 语言比汇编语言有更大开发效率的原因。 在应用汇编语言进行应用程序开发时, 如果精心规划好程序结构, 设计好各种数据结构、子程序、中断程序,积累大量的算法程序(相当于函数库,也可以高效率的用汇编语言进行单片机开发。倒是兼容性、可移植性是汇编语言的最大限制,因为不同单片机有不同的指令系统,而 C 语言把这个问题,交给了机器也就是编译器去解决了。其实, 计算机的发展, 就是把尽可能多的事情交个机器去解决。

51单片机汇编语言教程:13课单片机逻辑与或异或指令详解

51单片机汇编语言教程:第13课-单片机逻辑与或异或指令详解

结果11111001 而所有的或指令,就是将与指仿中的ANL换成ORL,而异或指令则是将ANL换成XRL。即或指令: ORL A,Rn;A和Rn中的值按位'或',结果送入A中 ORL A,direct;A和与间址寻址单元@Ri中的值按位'或',结果送入A中 ORL A,#data;A和立direct中的值按位'或',结果送入A中 ORL A,@Ri;A和即数data按位'或',结果送入A中 ORL direct,A;direct中值和A中的值按位'或',结果送入direct中 ORL direct,#data;direct中的值和立即数data按位'或',结果送入direct中。 异或指令: XRL A,Rn;A和Rn中的值按位'异或',结果送入A中 XRL A,direct;A和direct中的值按位'异或',结果送入A中 XRL A,@Ri;A和间址寻址单元@Ri中的值按位'异或',结果送入A中 XRL A,#data;A和立即数data按位'异或',结果送入A中 XRL direct,A;direct中值和A中的值按位'异或',结果送入direct中 XRL direct,#data;direct中的值和立即数data按位'异或',结果送入direct中。 练习: MOV A,#24H MOV R0,#37H ORL A,R0 XRL A,#29H MOV35H,#10H ORL35H,#29H MOV R0,#35H ANL A,@R0 四、控制转移类指令 无条件转移类指令 短转移类指令 AJMP addr11 长转移类指令

C51单片机实验总结报告

HEFEI UNIVERSITY 单片机实验报告 系别电子信息与电气工程系专业 班级 学号 姓名 指导老师 完成时间

实验一构建单片机最小系统和实验环境熟悉 一、预习要求 1.构建单片机最小系统,熟悉51单片机的结构及编程方法 2.按照程序流程图编写出程序 二、实验目的 1.熟悉星单片机最小系统的组成和工作原理,熟悉Keil C51集成环境软件的使用方法。 2.熟悉MCS51汇编指令,能自己编写简单的程序,控制硬件。 三、实验内容 单片机最小系统实验: 1、熟悉单片机最小系统的组成和工作原理,熟悉Keil C51集成环境软件的安装和使用方法。 2、作出单片机最小系统的组成原理图,分析其各构成单元的工作原理。 存储单元数据传输实验 1、熟悉MCS51汇编指令。 2、进行存储单元数据传输实验,编写程序。 3、运行程序,验证译码的正确性。 四、实验原理 1、作出单片机最小系统的组成原理图

2.最小系统版的组成: 时钟电路,复位电路,电源电路。 3.软件编译环境的熟悉 实验中我们使用keilC环境编译程序。其窗口界面如下: 4.测试程序 ;将从外部RAM3000H单元开始连续存放的 ;50个单字节数据传送到内部RAM30H单元的50个单元中。 ORG 0000H MOV R0,#32H ;计数初值50 MOV A,#78H ;(A)=78H送外部3000H--3050H MOV DPTR,#3000H ;外部数据存储器首地址3000H送DPTR LOOP0: MOVX @DPTR,A ;送78H到外部数据存储区3000H INC DPTR ;外部数据存储区地址增一 DJNZ R0,LOOP0 ;循环次数减一不为零转LOOP0 SETB P1.2 CLR P1.3 CLR P1.4 ;74HC138输入为100,使CS2=0选中62256 MOV R0,#32H ;循环次数50送R0 MOV R1,#30H ;内部数据存储区首址30H送R1 MOV DPTR,#3000H ;外部数据存储区首址3000H送DPTR

单片机控制系统汇编程序

; step motor control ; ASM for MCS51 mode equ 082h contrl equ 08003h ctl equ 08000h ;8255接口芯片PA口的地址值 Astep equ 01h ;对A相通电,PA口的赋值 Bstep equ 02h ;对B相通电,PA口的赋值 Cstep equ 04h ;对C相通电,PA口的赋值 Dstep equ 08h ;对D相通电,PA口的赋值 dly_c equ 10h ;启动初值(加速度)寄存器 sd1 equ 80 ;0--255 加速度初值:值越小,加速越快 sd2 equ 40 ;

51单片机经典编辑流水灯汇编程序

单片机流水灯汇编程序设计 流水灯汇编程序 8只LED为共阳极连接,即单片机输出端为低电平时即可点亮LED。 ;用最直接的方式实现流水灯 ORG 0000H START:MOV P1,#01111111B ;最下面的LED点亮 LCALL DELAY ;延时1秒 MOV P1,#10111111B ;最下面第二个的LED点亮 LCALL DELAY ;延时1秒 MOV P1,#11011111B ;最下面第三个的LED点亮(以下省略) LCALL DELAY MOV P1,#11101111B LCALL DELAY MOV P1,#11110111B LCALL DELAY MOV P1,#11111011B LCALL DELAY MOV P1,#11111101B LCALL DELAY MOV P1,#11111110B LCALL DELAY MOV P1,#11111111B ;完成第一次循环点亮,延时约0.25秒 AJMP START ;反复循环 ;延时子程序,12M晶振延时约250毫秒 DELAY: ;大约值:2us*256*256*2=260ms,也可以认为为250ms PUSH PSW ;现场保护指令(有时可以不加) MOV R4,#2 L3: MOV R2 ,#00H L1: MOV R3 ,#00H L2: DJNZ R3 ,L2 ;最内层循环:(256次)2个周期指令(R3减一,如果比1大,则转向L2) DJNZ R2 ,L1 ; 中层循环:256次 DJNZ R4 ,L3 ;外层循环:2次 POP PSW RET END

51单片机汇编程序集(二) 2008年12月12日星期五 10:27 辛普生积分程序 内部RAM数据排序程序(升序) 外部RAM数据排序程序(升序) 外部RAM浮点数排序程序(升序) BCD小数转换为二进制小数(2位) BCD小数转换为二进制小数(N位) BCD整数转换为二进制整数(1位) BCD整数转换为二进制整数(2位) BCD整数转换为二进制整数(3位) BCD整数转换为二进制整数(N位) 二进制小数(2位)转换为十进制小数(分离BCD码) 二进制小数(M位)转换为十进制小数(分离BCD码) 二进制整数(2位)转换为十进制整数(分离BCD码) 二进制整数(2位)转换为十进制整数(组合BCD码) 二进制整数(3位)转换为十进制整数(分离BCD码) 二进制整数(3位)转换为十进制整数(组合BCD码) 二进制整数(M位)转换为十进制整数(组合BCD码) 三字节无符号除法程序(R2R3R4/R7)=(R2)R3R4 余数R7 ;二进制整数(2位)转换为十进制整数(分离BCD码) ;入口: R3,R4 ;占用资源: ACC,R2,NDIV31 ;堆栈需求: 5字节 ;出口: R0,NCNT IBTD21 : MOV NCNT,#00H MOV R2,#00H IBD211 : MOV R7,#0AH LCALL NDIV31 MOV A,R7 MOV @R0,A INC R0 INC NCNT MOV A,R3 ORL A,R4 JNZ IBD211 MOV A,R0 CLR C SUBB A,NCNT MOV R0,A RET ;二进制整数(2位)转换为十进制整数(组合BCD码) ;入口: R3,R4 ;占用资源: ACC,B,R7 ;堆栈需求: 3字节

51单片机汇编语言教程:28课音乐程序设计

51单片机汇编语言教程:第28课-音乐程序设计

下面给出程序序清单,可直接在TD-III型学习机上演奏,对其它不一样型号的学习机,只需对应地改变一下地址即可。本程序演奏的是民歌“八月桂花遍地开”,C调,节奏为94拍/分。读者也能自行找出一首歌,按表1和表2给定的常数,将乐曲翻译成码表输入机器,而程序不变。本实验办法简便,即使不懂音乐的人,将一首陌生的曲子翻译成代码也是易事,和着机器的演奏学唱一首歌曲,其趣味无穷。 程序清单(略,请参看源程序的说明)。 程序框图如图2所示。 <单片机音乐程序的设计图> 本课由单片机教程网提供,有问题指出. 硬件连接说明: 随便找一个仿真机或者什么单片机实验板,只要能工作的就行,将程序输入,运行,然后找个音箱(你计算机旁边应当就有一对吧)拨出插头,插头的前端接在P1。0上,后面部分找根线接单片机的地,就应当有声了,然后怎么改进硬件连接就是你的事了。。。。 音乐程序汇编代码代码1-------------Voice.asm--------------------------ORG0000H

LJMP START ORG000BH INC20H;中断服务,中断计数器加1 MOV TH0,#0D8H MOV TL0,#0EFH;12M晶振,形成10毫秒中断 RETI START: MOV SP,#50H MOV TH0,#0D8H MOV TL0,#0EFH MOV TMOD,#01H MOV IE,#82H MUSIC0: NOP MOV DPTR,#DAT;表头地址送DPTR MOV20H,#00H;中断计数器清0 MOV B,#00H;表序号清0 MUSIC1: NOP CLR A MOVC A,@A+DPTR;查表取代码 JZ END0;是00H,则结束 CJNE A,#0FFH,MUSIC5 LJMP MUSIC3 MUSIC5: NOP MOV R6,A INC DPTR MOV A,B MOVC A,@A+DPTR;取节拍代码送R7

51单片机实训报告

“51单片机”精简开发板的组装及调试实训报告

为期一周的单片机实习已经结束了。通过此次实训,让我们掌握了单片机基本原理的基础、单片机的编程知识以及初步掌握单片机应用系统开发实用技术,了解“51”单片机精简开发板的焊接方法。同时培养我们理论与实践相结合的能力,提高分析问题和解决问题的能力,增强学生独立工作能力;培养了我们团结合作、共同探讨、共同前进的精神与严谨的科学作风。 此次实训主要有以下几个方面: 一、实训目的 1.了解“51”精简开发板的工作原理及其结构。 2.了解复杂电子产品生产制造的全过程。 3.熟练掌握电子元器件的焊接方法及技巧,训练动手能力,培养工程实践概念。4.能运用51单片机进行简单的单片机应用系统的硬件设计。 5.掌握单片机应用系统的硬件、软件调试方法 二、实验原理 流水灯实际上就是一个带有八个发光二极管的单片机最小应用系统,即为由发光二极管、晶振、复位、电源等电路和必要的硬件组成的单个单片机。 它的电气性能指标:输入电压:DC4.5~6V,典型值为5V。可用干电池组供电,也可用直流稳压电源供电。 如图所示: 本流水灯实际上就是一个带有八个发光二极管的单片机最小应用系统,即为由发光二极管、晶振、复位、电源等电路和必要的硬件组成的单个单片机。 三、硬件组成 1、晶振电路部分 单片机系统正常工作的保证,如果振荡器不起振,系统将会不能工作;假如振荡器运行不规律,系统执行程序的时候就会出现时间上的误差,这在通信中会体现的很明显:电路将无法通信。他是由一个晶振和两个瓷片电容组成的,x1和x2分别接单片机的x1和x2,晶振的瓷片电容是没有正负的,注意两个瓷片电容相连的那端一定要接地。 2、复位端、复位电路 给单片机一个复位信号(一个一定时间的低电平)使程序从头开始执行;一般有两中复位方式:上电复位,在系统一上电时利用电容两端电压不能突变的原理给系统一个短时的低电平;手动复位,同过按钮接通低电平给系统复位,时如果手按着一直不放,系统将一直复位,不能正常。当要对晶体重置时,只要对此引脚电平提升至高电平并保持两个及其周期以上的时间便能完成系统重置的各

最经典的51单片机经典流水灯汇编程序

单片机流水灯汇编程序设计 开发板上的8只LED为共阳极连接,即单片机输出端为低电平时即可点亮LED。 程序A: ;用最直接的方式实现流水灯 ORG 0000H START:MOV P1,#01111111B ;最下面的LED点亮 LCALL DELAY;延时1秒 MOV P1,#10111111B ;最下面第二个的LED点亮 LCALL DELAY;延时1秒 MOV P1,#11011111B ;最下面第三个的LED点亮(以下省略) LCALL DELAY MOV P1,#11101111B LCALL DELAY MOV P1,#11110111B LCALL DELAY MOV P1,#11111011B LCALL DELAY MOV P1,#11111101B LCALL DELAY MOV P1,#11111110B LCALL DELAY MOV P1,#11111111B ;完成第一次循环点亮,延时约0.25秒 AJMP START ;反复循环 ;延时子程序,12M晶振延时约250毫秒 DELAY: MOV R4,#2 L3: MOV R2 ,#250 L1: MOV R3 ,#250 L2: DJNZ R3 ,L2 DJNZ R2 ,L1 DJNZ R4 ,L3 RET END 程序B: ;用移位方式实现流水灯

ajmp main ;跳转到主程序 org 0030h ;主程序起始地址 main: mov a,#0feh ;给A赋值成11111110 loop: mov p1,a ;将A送到P1口,发光二极管低电平点亮 lcall delay ;调用延时子程序 rl a ;累加器A循环左移一位 ajmp loop ;重新送P1显示 delay: mov r3,#20 ;最外层循环二十次 d1: mov r4,#80 ;次外层循环八十次 d2: mov r5,#250 ;最内层循环250次 djnz r5,$ ;总共延时2us*250*80*20=0.8S djnz r4,d2 djnz r3,d1 ret end 51单片机经典流水灯程序,在51单片机的P2口接上8个发光二极管,产生流水灯的移动效果。 ORG 0 ;程序从0地址开始 START: MOV A,#0FEH ;让ACC的内容为11111110 LOOP: MOV P2,A ;让P2口输出ACC的内容 RR A ;让ACC的内容左移 CALL DELAY ;调用延时子程序 LJMP LOOP ;跳到LOOP处执行 ;0.1秒延时子程序(12MHz晶振)=================== DELAY: MOV R7,#200 ;R7寄存器加载200次数 D1: MOV R6,#250 ;R6寄存器加载250次数 DJNZ R6,$ ;本行执行R6次 DJNZ R7,D1 ;D1循环执行R7次 RET ;返回主程序

51单片机总结上拉电阻

51单片机总结——上拉电阻 单片机2009-07-28 14:56:05 阅读961 评论1字号:大中小 上拉电阻的作用: (1)用于为OC和OD门电路,提供驱动能力。 以OC(集电极开路)电路为例: 例如,达林顿管(其实就是复合三级管)集成块ULN2003. 内部一路的电路如图,就是一个集电极开路电路。 如果不加上拉电阻是无法高电平驱动其他器件的。因为当三极管截至市没有电流流通的路径,更谈不上驱动了。这个跟单片机P0口加上拉电阻的原理一样。 (2)提高高电平电位: 单片机P1口外接4×4矩阵键盘。另外复用P1.0~P1.3外接ULN2003控制驱动步进电机。 实验中遇到的问题:当接入ULN2003时键盘无法工作,去掉ULN2003后键盘工作正常。ULN2003工作正常。(注,两个部分不同时工作) 问题分析:由于键盘的结构,无非就是两个金属片的接通或断开。但是接入ULN2003 后无法正常工作,说明是接入ULN2003影响到了P1口电平的变化。用万用表测的电压,当单片机输出高电平时,P1.0~P1.3电压1V左右,P1.4~P1.7电压4.3V左右,于是测A T89s52高低电平的判决电位,在1.3V左右。这样P1.0~P1.3始终是低电平,键盘根本无法实现扫描功能。 解决方法,只要抬高P1口高电平时的电位,就可以正常工作, 1.在P1口到ULN2003上串接电阻,起到分压的作用,就可以抬高电平。 2.给P1口接上拉电阻,跟P1口内部电阻并联,减小上拉电阻阻值,减小分得的电压,从而抬高P0口高电平电位。 采用第二种方案可以抬高电平到2.5V左右。键盘工作正常。 另外:我在做液晶显示实验的时候,数据线用的P0口,无法正常工作,不显示字符。但是乱动一下数据线就可以完成显示,但是显示现象并不正常,字符不是一次写入,而是乱动几次才能写完全部内容,正常应该一次全部显示。原因是由于,我的P0口中有六个端口都外接并联三个发光二极管。,因为从资料上查到,P0口每一个端口最大可以吸收10MA 电流,总电流不能超过26MA电流。这样算我的总电流已经到了40MA,呵呵。见笑了。所以怀疑是驱动的问题。于是去掉了几个二极管。显示一切正常。似乎问题已经解决,但总觉得还是有点问题,于是又经过几次试验,发现只有当P0.7端口的并联二极管去掉一个,再在其他端口接上一个发光二极管。此时也可以正常显示。但是这样P0口吸收电流在38MA,也超过了26MA不少。所以不是吸收电流太大的问题。仔细分析当端口并联外接三个二极管的时候等效于加了一个700欧左右的电阻,于是把二极管去掉换成一个1k电阻,液晶也无法显示。

#第3章-MCS-51系列单片机的指令系统和汇编语言程序

第3章MCS一51系列单片机的指令系统 和汇编语言程序 3·1汇编指令 3·1·1请阐明机器语言、汇编语言、高级语言三者的主要区别,进一步说明为什么这三种语言缺一不可。 3·1·2请总结: (1)汇编语言程序的优缺点和适用场合。 (2)学习微机原理课程时,为什么一定要学汇编语言程序? 3·1·3MCS一51系列单片机的寻址方式有哪儿种?请列表分析各种寻址方式的访问对象和寻址范围。 3·1·4要访问片内RAM,可有哪几种寻址方式? 3·1·5要访问片外RAM,有哪几种寻址方式? 3·1·6要访问ROM,又有哪几种寻址方式? 3·1·7试按寻址方式对MCS一51系列单片机的各指令重新进行归类(一般根据源操作数寻址方式归类,程序转移类指令例外)。 3·1·8试分别针对51子系列和52子系列,说明MOV A,direct指令和MOV A,@Rj 指令的访问范围。 3·1·9传送类指令中哪几个小类是访问RAM的?哪几个小类是访问ROM的?为什么访问ROM的指令那么少?CPU访问ROM多不多?什么时候需要访问ROM? 3·1·10试绘图示明MCS一51系列单片机数据传送类指令可满足的各种传送关系。3·1·11请选用指令,分别达到下列操作: (1)将累加器内容送工作寄存器R6. (2)将累加器内容送片内RAM的7BH单元。 (3)将累加器内容送片外RAM的7BH单元。 (4)将累加器内容送片外RAM的007BH单元。 (5)将ROM007BH单元内容送累加器。 3·1·12 区分下列指令的不同功能: (l)MOV A,#24H 和MOV A.24H (2)MOV A,R0和MOV A,@R0 (3)MOV A,@R0和MOVX A,@R0 3·1·13设片内RAM 30H单元的内容为40H; 片内RAM 40H单元的内容为l0H; 片内RAM l0H单元的内容为00H; (Pl)=0CAH。 请写出下列各指令的机器码和执行下列指令后的结果(指各有关寄存器、RAM单元和端口的内容)。 MOV R0,#30H MOV A,@R0 MOV RI,A MOV B,@Rl MOV @R0,Pl MOV P3,Pl MOV l0H,#20H MOV 30H,l0H

单片机汇编语言经典一百例

51单片机实用程序库 4.1 流水灯 程序介绍:利用P1 口通过一定延时轮流产生低电平 输出,以达到发光二极管轮流亮的效果。实际应用中例如:广告灯箱彩灯、霓虹灯闪烁。 程序实例(LAMP.ASM) ORG 0000H AJMP MAIN ORG 0030H MAIN: 9 MOV A,#00H MOV P1,A ;灭所有的灯 MOV A,#11111110B MAIN1: MOV P1,A ;开最左边的灯 ACALL DELAY ;延时 RL A ;将开的灯向右边移 AJMP MAIN ;循环 DELAY:

MOV 30H,#0FFH D1: MOV 31H,#0FFH D2: DJNZ 31H,D2 DJNZ 30H,D1 RET END 4.2 方波输出 程序介绍:P1.0 口输出高电平,延时后再输出低电 平,循环输出产生方波。实际应用中例如:波形发生器。 程序实例(FAN.ASM): ORG 0000H MAIN: ;直接利用P1.0口产生高低电平地形成方波////////////// ACALL DELAY SETB P1.0 ACALL DELAY 10 CLR P1.0 AJMP MAIN ;////////////////////////////////////////////////// DELAY: MOV R1,#0FFH

DJNZ R1,$ RET END 五、定时器功能实例 5.1 定时1秒报警 程序介绍:定时器1每隔1秒钟将p1.o的输出状态改变1 次,以达到定时报警的目的。实际应用例如:定时报警器。程序实例(DIN1.ASM): ORG 0000H AJMP MAIN ORG 000BH AJMP DIN0 ;定时器0入口 MAIN: TFLA G EQU 34H ;时间秒标志,判是否到50个 0.2秒,即50*0.2=1秒 MOV TMOD,#00000001B;定时器0工作于方式 1 MOV TL0,#0AFH MOV TH0,#3CH ;设定时时间为0.05秒,定时 20次则一秒 11 SETB EA ;开总中断

快速入门单片机大全语言

快速入门单片机汇编语言 简要: 单片机有通用型和专用型之分。专用型是厂家为固定程序的执行专门开发研制的一种单片机,其程序不可更改。通用型单片机是常用的一种供学习或自主编制程序的单片机,其程序需要自己写入,可更改。单片机根据其基本操作处理位数不同可以分为:1位、4位、8位、16、32位单片机。 正文: 在此我们主要讲解美国ATMEL公司的89C51单片机。 一、89C51单片机PDIP(双列直插式)封装引脚图: 其引脚功能如下: P0口(—):为双向三态口,可以作为输入/输出口。但在实际应用中通常作为地址/数据总线口,即为低8位地址/数据总线分时复用。低8位地址在ALE信号的负跳变锁存到外部地址锁存器中,而高8位地址由P2口输出。 P1口(—):其每一位都能作为可编程的输入或输出线。 P2口(—):每一位也都可作为输入或输出线用,当扩展系统外设时,可作为扩展系统的地址总线高8位,与P0口一起组成16位地址总线。对89c51单片机来说,P2口一般只作为地址总线使用,而不作为I/O线直接与外设相连。 P3口(—):其为双功能口,作为第一功能使用时,其功能与P1口相同。当作为第二功能使用时,每一位功能如下表所示。 XTAL1(xtal2):外接晶振一脚,分别接晶振的一端。 Gnd:电源地。 Vcc:电源正级,接+5V。 PROG\ALE:地址锁存控制端 PSEN:片外程序存储器读选通信号输出端,低电平有效。 EA\vpp:访问外部程序储存器控制信号,低电平有效。当EA为高电平时访问片内存储器,若超出范围则自动访问外部程序存储器。当EA为低电平时只访问外部程序存储器。 二、常用指令及其格式介绍: 1、指令格式:

51单片机汇编语言教程

51单片机汇编语言教程:1课:单片机简叙 1、什么是单片机一台能够工作的计算机要有这样几个部份构成:CPU(进行运算、控制)、RAM(数据存储)、ROM(程序存储)、输入/输出设备(例如:串行口、并行输出口等)。在个人计算机上这些部份被分成若干块芯片,安装一个称之为主板的印刷线路板上。而在单片机中,这些部份,全部被做到一块集成电路芯片中了,所以就称为单片(单芯片)机,而且有一些单片机中除了上述部份外,还集成了其它部份如A/D,D/A等。 单片机是一种控制芯片,一个微型的计算机,而加上晶振,存储器,地址锁存器,逻辑门,七段译码器(显示器),按钮(类似键盘),扩展芯片,接口等那是单片机系统。 天!PC中的CPU一块就要卖几千块钱,这么多东西做在一起,还不得买个天价!再说这块芯片也得非常大了。 不,价格并不高,从几元人民币到几十元人民币,体积也不大,一般用40脚封装,当然功能多一些单片机也有引脚比较多的,如68引脚,功能少的只有10多个或20多个引脚,有的甚至只8只引脚。 为什么会这样呢? 功能有强弱,打个比方,市场上面有的组合音响一套才卖几百块钱,可是有的一台功放机就要卖好几千。另外这种芯片的生产量很大,技术也很成熟,51系列的单片机已经做了十几年,所以价格就低了。 既然如此,单片机的功能肯定不强,干吗要学它呢? 话不能这样说,实际工作中并不是任何需要计算机的场合都要求计算机有很高的性能,一个控制电冰箱温度的计算机难道要用PIII?应用的关键是看是否够用,是否有很好的性能价格比。所以8051出来十多年,依然没有被淘汰,还在不断的发展中。 2、MCS51单片机和8051、8031、89C51等的关系 更多单片机学习资料请来https://www.doczj.com/doc/e56938076.html, 我们平常老是讲8051,又有什么8031,现在又有89C51,89s51它们之间究竟是什么关系? MCS51是指由美国INTEL公司(对了,就是大名鼎鼎的INTEL)生产的一系列单片机的总称,这一系列单片机包括了好些品种,如8031,8051,8751,8032,8052,8752等,其中8051是最早最典型的产品,该系列其它单片机都是在8051的基础上进行功能的增、减、改变而来的,所以人们习惯于用8051来称呼MCS51系列单片机,而8031是前些年在我国最流行的单片机,所以很多场合会看到8031的名称。INTEL公司将MCS51的核心技术授权给了很多其它公司,所以有很多公

51单片机c语言总结.

入门有针对性的解决一些简单的实际问题,边理论边实践学一样会一样 基本实验:LED流水灯,数码管显示,键盘控制,音乐播放,继电器控制I2C通信实验,串口通信实验,红外线遥控信号解码实验等 单片机的定义分类和内部组成 1单片机就是中央处理器CPU,随机存储器RAM。只读存储器ROM。定时、计数器和各种输入输出接口I/o接口电路等部件集成在一块电路芯片上的微型计算机。 2,1分类按制造工艺分:HMOS和CHMOS CHMOS包括80c51等中间加了C功耗要小适合便携式手提式和野外作业。 2分类按不同容量的存储器配置分:51子系列和52子系列 51表示单片机最后一位数字为1作为标志。片内带有4KbROM或EPROM(Erasable Programmable ROM,可擦除可编程ROM,128BRAM,两个16位定时器/计数器和5个中段器52系列是增强型各项指标都高。 AT89S51是AT89C51的升级版支持ISP在线更新程序ISP(Internet Service Provider 内部集成看门狗计时器等。 3.1串行接口就是接口数据传送 3.2中断控制系统接收中断请求如定时时间到,需要鸣笛报警类似stop to do 停下来去执行ROM中特定的每段程序,执行完后再继续执行先前中断的程序 时钟电路控制节拍工作。 一个典型的单片机应用系统包括输入电路,单片机,输出电路 把他想象成电脑。 单片机的应用: p5 十六进制A10B11C12D13E14F15 记A10和D13点得13点F15不是F16 十六进制加H 逻辑数据的运算 逻辑与。。。两个输入一个输出中间加一个恒定5v电压 有0为0,全1出1 逻辑或有1为1,全0出0; 字长通常与计算机内部的寄存器和运算器数据总线的宽度一致 实例1功能感受protues仿真单片机播放《渴望》主题曲 运用protues打开仿真原理图。 对单片机进行处理编辑edit component,选取目标文件hex Clock frequency 时钟频率 Ok 原理图编辑窗口没有滚动条,可通过预览窗口该表原理图的可视范围。 Protues双击右键删除 先单击鼠标右键,可通过鼠标左键可以编辑元器件的属性 鼠标右键来删除画错的连线 中键缩放原理图 新建即保存新建设计文件

相关主题
相关文档 最新文档