单片机实验讲义
- 格式:doc
- 大小:289.00 KB
- 文档页数:38
目录实验一、单片机集成开发环境入门实验二、I/O口输入输出实验――循环灯程序设计实验三、I/O口输入输出实验――LED数码管动态显示与按键去抖程序设计实验四、定时器应用实验――LED数码动态显示与矩阵键盘赋值程序设计实验五、计数器应用实验――基于热敏电阻和555时基电路的简易温度计设计实验一、单片机集成开发环境入门一、实验目地1.掌握单片机集成开发软件“W A VE 3.2”的开发环境配置。
2.掌握单片机集成开发软件“WA VE 3.2”的基本功能,了解MCS-51系列单片机应用系统的软件开发过程。
●掌握创建工程项目和管理工程项目的方法。
●掌握MCS-51系列单片机汇编程序的编辑、编译方法。
●掌握MCS-51系列单片机汇编程序的仿真调试方法和观察窗口的使用。
二、实验设备PC 兼容机一台,操作系统为WindowsXP,安装有单片机集成开发软件“W A VE3.2”。
三、实验原理1.单片机集成开发软件“W A VE 3.2”简介单片机应用程序的设计步骤通常可分为以下几步:(1)根据单片机应用系统的功能进行算法构思和设计,画出程序流程图;(2)用单片机汇编语言、C语言或PLM语言(初学者一般应采用汇编语言)编写源程序;(3)将源程序翻译成单片机可执行的机器码程序,即所谓的目标程序,该过程称为汇编或编译;(4)程序调试,将目标程序下载到目标单片机(即应用系统板中的单片机),运行目标程序,对运行结果进行监控。
若运行结果与预期结果相符,程序正确,调试结束;否则由结果的差异分析算法或程序的可能错误,重复步骤2至4,修改源程序、重新汇编、再调试,直至程序正确。
以上步骤2至4可应用单片机集成开发软件在个人计算机上完成。
“W A VE 3.2”是一款功能强大的单片机集成开发软件,可开发多个系列的单片机应用系统。
该软件主要功能有:(1)集成了文本编辑器,可对源程序进行编辑、修改;(2)集成了汇编器,可对源程序进行汇编,自动查找源程序中的语法错误,并将无语法错误的源程序翻译成目标程序;(3)集成了仿真调试器,可对目标系统进行在线仿真调试,也可在个人计算机上对目标程序进行模拟仿真调试。
单片机实验讲义执笔人:杨晓锋DVCC单片机实验系统简介本科目实验使用的平台为启东公司的DVCC-52JH单片机仿真实验仪(带有配套试验软件)。
可基本满足MCS-51(80C51)系列单片机课程(本/专科)的实验要求。
实验平台资源:1、AT89C52单片机(6MHz晶体振荡器、256B片内RAM、8KB程序存储器(FLASH)、3个定时/计数器、6个中断源(T2))。
2、实验平台带有总线扩展有64BK片外RAM,用户可使用范围0000H~0FEFFH;64KB片外ROM,用户可使用范围0000H~0FEFFH。
3、实验平台的主要芯片有:1片8255可编程通用并行接口芯片、1片8155芯片、1片译码芯片74138、1片74393芯片、1片D/A转换芯片0832、1片A/D转换芯片0809、2片串/并转换芯片74164、若干辅助芯片74240、74373等和常用逻辑门电路芯片。
4、实验平台上的主要外设包括:K1~K10滑动开关、L1~L12发光二极管(有3种颜色)、2个LED七段数码管、1个单脉冲发生器、1个时钟频率选择器、1个步进电机(带驱动电路)、1个直流电机(带驱动电路)、2个电位器、1个继电器、1个扬声器驱动、1个双踪模拟示波器、带有总线扩展区、带有EPROM烧录区。
实验系统的使用步骤:1、在计算机、实验仪关闭时,使用实验平台自带的RS-232通用串口线连接计算机的COM口和实验箱的J2串行口。
2、启动计算机,运行“DVCC52JH实验系统”。
3、在计算机上编写并调试实验程序,在实验箱中联接实验所需连线。
4、打开试验箱电源,点击实验箱上的“复位”按钮,再点击实验箱上键盘区的“PCDBG”按钮。
5、在计算机上的“DVCC实验系统”软件中,左键单击工具栏上的“联接”按钮(或选择“动态调试”菜单下的“联接DVCC实验系统选项”)。
6、如果联接正常将弹出若干小窗口。
如果联接失败重新执行步骤3、4。
选项,将实验程序传送到实验箱。
单片机原理与应用实验指导书(电科07用)扬州大学物理学院电子教研中心张凯2009.3Keil集成开发环境介绍Keil C51是由Keil Software公司出品的51系列兼容单片机C语言软件开发系统,是目前最流行的开发MCS-51 系列单片机的软件。
Keil C51提供了包括C 编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(μVision)将这些部份组合在一起。
μVision for Windows是Keil C51在32位Windows环境的版本,它的人机界面友好,操作方便,是开发者的首选。
运行Keil 软件需要Pentium 或以上的CPU,16MB或更多RAM,20M 以上空闲的硬盘空间,WIN98、NT、WIN2000、WINXP等操作系统。
一、Keil 工程的建立、设置与编译连接首先启动Keil 软件的集成开发环境,如果已正确安装了该软件,可以从桌面上直接双击μVision的图标以启动该软件。
启动画面如图。
μVision启动后,程序窗口的左边有一个工程管理窗口,该窗口有5个标签,分别是Files、Regs、Books、Functions和Templates,这三个标签页分别显示当前项目的文件结构、CPU 的寄存器及部份特殊功能寄存器的值(调试时才出现)、所选CPU 的附加说明文件、函数和模板,如果是第一次启动Keil,那么这三个标签页全是空的。
1、建立工程在项目开发中,首先要为这个项目选择CPU(Keil 支持数百种CPU,而这些CPU的特性并不完全相同),确定编译、汇编、连接的参数,指定调试的方式,有一些项目还会有多个文件组成等,为管理和使用方便,Keil 使用工程(Project)这一概念,将这些参数设置和所需的所有文件都加在一个工程中,只能对工程而不能对单一的源程序进行编译(汇编)和连接等操作,下面我们就一步一步地来建立工程。
MCS-51单片机实验讲义北京工商大学信息工程学院- i -目录第一章概述 (1)第二章实验系统组成和结构............................... . (3)第三章MCS-51系列单片机实验 (16)软件实验1. 存储器块清零.......................................... .. (17)2. 二进制到BCD码转换............... (18)3. 二进制到ASCII码转换 (19)4. 内存块移动 (20)5. 程序跳转表 (21)6. 数据排序 (22)硬件实验1. P1口输入输出 (23)2.继电器控制 (25)3.用74LS245读入数据 (26)4. 用74LS273输出数据 (27)5. PWM转换电压实验.................................................................................... .286.音频控制 (29)7.用8255输入、输出 (30)8. 串行数转换并行数 (31)9. 并行数转换串行数 (33)10. 计数器实验 (35)11. 外部中断实验 (36)12. 定时器实验 (38)13. D/A转换实验 (40)14. A/D转换实验 (42)15. 外部中断实验(急救车与交通灯) (44)16. 八段数码管显示 (46)17. 键盘扫描显示实验 (48)18. 电子时钟 (40)19. 单片机串行口通讯实验 (52)20. 打印机控制实验 (54)21. 直流电机控制实验 (56)22. 步进电机控制实验 (58)23. 温度传感器实验 (61)- ii -24. 液晶显示屏控制实验 (62)25. 电子琴 (64)26. 空调温度控制实验 (66)27. 计算器实验 (69)28. 压力传感器实验 (71)29. 红外通讯实验 (72)30. 16x16点阵显示实验 (76)31. I2C总线实验.. (78)第四章逻辑分析工具 (80)第五章系统自检功能 (83)- iii -第一章概述1.1系统实验板本实验板提供以下实验电路和模块(1) 逻辑电平输入开关(2) 逻辑电平显示电路(3) 单脉冲电路(4) 扬声器驱动电路(5) 继电器控制电路(6) 逻辑门电路(7) 逻辑笔电路(8) 4MHz脉冲信号源和多级分频电路,可得多种脉冲信号。
第一章单片机结构及工作原理单片微型计算机(Single-chip Microcomputer)或称微控制器(Microcontroller)是为了适应工业现场的实时控制而设计的芯片。
具有集成度高、功能强、体积小、应用灵活、可靠性高等特点,在工业自动化、过程控制、智能仪器仪表、通信系统等众多领域得到了广泛的应用。
什么是单片机呢?所谓单片机是指:在一块硅片上集成了中央处理单元CPU、随机存储器RAM、程序存储器ROM或EPROM、定时器/计数器及串行和并行I/O接口,也就是集成在一块芯片上的微机。
1.1单片机分类单片机以所处理的数据位数来分,有8位单片机(MCS-51)、16位单片机(MCS-96)、32位单片机等。
本实验主要用MCS-51系列8位单片机。
MCS-51系列单片机主要有三个基本型号:8051 —片内有4KROM;8751 —片内有4KEPROM;8031 —片内无ROM和EPROM;由此可知,这三种型号的单片机区别仅在于片内程序存储器不同,其他性能结构是一致的。
1.2 MCS-51系列单片机内部结构一.硬件结构MCS-51系列单片机的基本结构如图1-1所示。
由图可知,MCS-51系列单片机主要由以下几部分组成:(1)8位中央处理器CPU;(2)片内4K字节的程序存储器ROM或EPROM(8031无ROM/EPROM);(3)片内128字节的数据存储器RAM;(4)21个特殊功能寄存器SFR;(5)4个8位并行I/O口;(6)两个16位定时器/计数器T0、T1;(7)2个优先级的5个中断源结构;(8)一个全双工的通过编程工作在异步方式的串行接口;(9)片内振荡器和时钟电路。
(10) 布尔处理器(11) 64KB 外部数据存储器地址空间。
(12) 64KB 外部程序存储器地址空间。
二. 硬件结构简介1. 中央处理器CPU中央处理器CPU 主要由算术逻辑运算部件、布尔处理器、控制器和工作寄存器等组成。
片机实验讲义2013 年10 月27 日星期日实验一汇编指令的练习与 BCD 码加减运算一实验要求学习和掌握 keil 汇编编译系统, 编写通用 4字节压缩 BCD 码的加、减法运算程 序。
二实验目的通过学习多字节压缩BCD 码加减运算的程序设计;学习汇编程序的编写, 学会编译.asm 源程序,编译,下载。
学习断点设置,单步执行,SFF 特殊功能寄 存器的查看等编程基本功能。
三 实验原理对于简单的 8 位加减可以直接调用指令就可以了。
例如加法可以使用指令 ADD 以及带 进位加 ADDC ,但单字节加减法只能在 256 之内进行运算;在实际应用中经常需要进行多 字节运算,从而处理更大的数据。
该实验介绍单片机 BCD 码多字节加、减运算通用程序的 设计。
1.多字节无符号压缩 BCD 码加法运算假设多字节无符号被加数的最低字节的地址为 共为len ;计算结果的地址于被加数相同。
♦入口参数:R0 :被加数地址指针; R1:加数地址指针; len :字节数。
♦ 出口参数:@R0:计算结果; rLen :计算结果字节数。
♦ 使用资源:ACC ,R0、R1,内部RAM 单兀len 、rlen 及存放被加数、加数、计算结果的内存单元。
示例程序如下:len DATA 70H rlen DATA 71H ADDSTART : PUSH PSWCLR CMOV rlen , #00HLOOP : MOV A , @R0 ADDC A , @R1 DA A MOV @R0, A INC R0R0,加数的最低字节地址为 R1,字节数 ;保护标志寄存器内容 ;进位位清 0 ;和的字节数先清 0;取被加数;求和;十进制调整 ;保存 ;地址增 1;字节数增 1;所有字节未加完继续,否则向下执行 ;和的最高字节无进位转 ADD20 ;和的最高字节地址内容为 01HRET END多字节加法运算一般是按从低字节到高字节的顺序进行的, 所以必须考虑低字节向高字 节的进位情况,被加数和加数的压缩 BCD 码,最大不超过 99,而 99+99+1 (进位) =199, 此时可以不需要使用 ADDC 指令,但当最低两字节相加后,必须使用“ DA A ”进行十进 制调整,调整后产生进位。
单片机实验指导书实验软件的学习一:学生学会应用两个关于单片机的软件,KEIL 软件的应用如下:安装好软件后由下列的图示进入程序的编写和调试。
先建一个工程,点Project.出现一个界面。
接着进行下一步。
点击NEW Project保存文件,可以是任意的文件名和保存路径。
按保存。
出现界面后选择Atmel,双击,找到AT89C51,按确定。
右击Target 1弹出如上图界面。
点击option for target 1.弹出如图窗口24改成12,接着点击output,出现下面窗口在creat hex 前的小格打钩。
按确定即可。
点击FILE ,点击NEW.弹出如图窗口接着保存,路径随意。
但文件名要在名称后面加后缀名。
C.即YU.C点击TARGET1前的框,弹出上图,右击source group.弹出下面窗口。
点击ADD FILE TO,选到路径后找到刚才所保存的.C文件。
即可。
可以在里边编写程序编译完成后点击就可。
成功后就可以退出进行下一步。
下面学习Proteus软件点击左边的P,进行元件的选择。
输入所需要找的元件即可。
双击调出。
即可以连线。
保存好后进行下一步。
双击89C51路径哪里选择刚才KEIL保存的路径底下的HEX文件即可。
工程项目一闪烁的LED灯实验目标初步学会KEIL和仿真软件的使用。
懂得编写一个简单的闪烁灯程序。
实验要求在KEIL上编写程序进行调试,并进行仿真。
实验原理LED发光二级管的阳极给高电平(1),阴极给低电平(0)时,二极管就可以点亮,同理在相反的电平信号下二极管就会熄灭。
实验内容1,一个灯进行闪烁,并仿真。
2,在原来基础上将一个灯进行改进,要求学生做8个LED灯同时闪烁。
3,进一步改进,做到16个LED灯闪烁。
4,要求在原来程序基础上修改延时时间。
实验参考程序和电路图闪烁的LED/* 名称:闪烁的LED说明:LED 按设定的时间间隔闪烁*/#include<reg51.h>#define uchar unsigned char#define uint unsigned intsbit LED=P1^0; //延时void DelayMS(uint x) {uchar i;while(x--) { for(i=0;i<120;i++);} } //主程序void main() { while(1) {LED=~LED;DelayMS(150); } }实验过程下面空白的地方由学生编写16个LED灯闪烁的程序,要求延时时间比较长。
单片机实验讲义DVCC单片机实验系统简介本科目实验使用的平台为启东公司的DVCC-52JH单片机仿真实验仪(带有配套试验软件)。
可基本满足MCS-51(80C51)系列单片机课程(本/专科)的实验要求。
实验平台资源:1、AT89C52单片机(6MHz晶体振荡器、256B片内RAM、8KB程序存储器(FLASH)、3个定时/计数器、6个中断源(T2))。
2、实验平台带有总线扩展有64BK片外RAM,用户可使用范围0000H~0FEFFH;64KB片外ROM,用户可使用范围0000H~0FEFFH。
3、实验平台的主要芯片有:1片8255可编程通用并行界面芯片、1片8155芯片、1片译码芯片74138、1片74393芯片、1片D/A 转换芯片0832、1片A/D转换芯片0809、2片串/并转换芯片74164、若干辅助芯片74240、74373等和常用逻辑门电路芯片。
4、实验平台上的主要外设包括:K1~K10滑动开关、L1~L12发光二极管(有3种颜色)、2个LED七段数码管、1个单脉冲发生器、1个时钟频率选择器、1个步进电机(带驱动电路)、1个直流电机(带驱动电路)、2个电位器、1个继电器、1个扬声器驱动、1个双踪模拟示波器、带有总线扩展区、带有EPROM烧录区。
实验系统的使用步骤:1、在计算机、实验仪关闭时,使用实验平台自带的RS-232通用串口线连接计算机的COM口和实验箱的J2串行口。
2、启动计算机,运行“DVCC52JH实验系统”。
3、在计算机上编写并调试实验程序,在实验箱中联接实验所需连线。
4、打开试验箱电源,点击实验箱上的“复位”按钮,再点击实验箱上键盘区的“PCDBG”按钮。
5、在计算机上的“DVCC实验系统”软件中,左键单击工具栏上的“联接”按钮(或选择“动态调试”菜单下的“联接DVCC实验系统选项”)。
6、如果联接正常将弹出若干小窗口。
如果联接失败重新执行步骤3、4。
7、在计算机上的“DVCC实验系统”软件中,选择“编译”菜单下的“编译连接并传送”选项,将实验程序传送到实验箱。
8、在计算机上的“DVCC实验系统”软件中,左键单击工具栏中的“运行”按钮,设置PC起始地址,观察实验现象,验证实验结果。
9、实验结束后关闭实验箱电源和计算机,拔下连线,收起实验箱并放回原处。
软件实验实验一清零实验一、实验目的:掌握汇编语言设计和调试方法,熟悉DVCC52实验系统的使用步骤。
二、实验内容:1、将片外扩展的RAM地址为0000H~70FFH的内容清零(也可设置它值)。
2、将片外扩展的RAM地址为0000H~7FFFH的内容清零(也可设置它值)。
三、实验程序流程图四、实验步骤:1、按照“实验系统使用步骤”1~7步进行。
2、在计算机上的“DVCC实验系统”软件中,左键单击工具栏中的“运行”按钮。
等待弹出运行窗口后,点击实验箱上的“复位”按钮,再点击实验箱上键盘区的“PCDBG”按钮,最后关闭运行窗口。
3、在计算机上的“DVCC实验系统”软件中,选择“窗口”菜单下的“显示外部数据窗口”选项。
在弹出的数据窗口中找到地址7000H~7FFFH查看数据是否已经改变。
4、实验结束后关闭实验箱电源和计算机,拔下连线,收起实验箱并放回原处。
五、思考:假使要把7000H~70FFH中的内容改成FFH,如何编制程序。
实验二拆字实验一、实验目的:掌握汇编语言设计和调试方法。
二、实验内容:将片外RAM中地址为7000H中的内容拆开,高位送7001H低位,低位送7002H低位。
7001H、7002H高位清零,一般本程序用于把数据送显示缓冲区时用。
三、实验程序流程图:四、实验步骤:1、按照“实验系统使用步骤”1~7步进行。
2、在计算机上的“DVCC实验系统”软件中,左键单击工具栏中的“运行”按钮。
等待弹出运行窗口后,点击实验箱上的“复位”按钮,再点击实验箱上键盘区的“PCDBG”按钮,最后关闭运行窗口。
3、先用存储器读写方法将7000H单元置成34H。
4、在计算机上的“DVCC实验系统”软件中,选择“窗口”菜单下的“显示外部数据窗口”选项。
在弹出的数据窗口中找到地址7000H~7002H查看结果,7001H和7002H单元中的内容应为03H 和04H。
5、实验结束后关闭实验箱电源和计算机,拔下连线,收起实验箱并放回原处。
实验三拼字实验一、实验目的进一步掌握汇编语言设计和调试方法。
二、实验器材DVCC—52JH+实验系统,DVCC—52JH+软件,PC机。
三、实验内容把7000H、7001H的低位相拼后送入7002H,一般本程序用于把显示缓冲区的数据取出拼装成一个字节。
四、实验程序框图开始(7000H)送A,屏蔽高位交换高低位后送B(7001H)送A,屏蔽高位A和B相或后送7002H结束五、实验步骤(1)将7000H单元内容置03H,7001H单元中的内容置04H。
(2)用单步或断点方式从0070H开始运行程序(输入0070后按STEP键为单步运行)。
(3)按MON键退出。
(4)检查7002H中的内容为34H。
实验四数据区传送程序一、实验目的:掌握RAM中的数据操作。
二、实验内容:将片外RAM中首地址为(R2、R3)的(R6、R7)个位元组数据,传送到目的首地址为(R4、R5)的存储区。
三、实验程序流程图:四、实验步骤:1、按照“实验系统使用步骤”1~7步进行。
2、在计算机上的“DVCC实验系统”软件中,左键单击工具栏中的“运行”按钮。
等待弹出运行窗口后,点击实验箱上的“复位”按钮,再点击实验箱上键盘区的“PCDBG”按钮,最后关闭运行窗口。
3、在计算机上的“DVCC实验系统”软件中,选择“窗口”菜单下的“显示外部数据窗口”选项。
在弹出的数据窗口中查看结果。
4、实验结束后关闭实验箱电源和计算机,拔下连线,收起实验箱并放回原处。
硬件实验实验五P3.3口输入、P1口输出实验一、实验目的1. 掌握P3口、P1口简单使用。
2. 学习延时程序的编写和使用。
二、实验器材DVCC—52JH+实验系统,DVCC—52JH+软件,PC机,导线。
三、实验内容1.P3.3口做输入口,外接一脉冲,每输入一个脉冲,P1口按十六进制加一。
2.P1口做输出口,编写程序,使P1口接的8个发光二极管L1—L8按16进制加一方式点亮发光二极管。
四、实验说明1.P1口是准双向口,它作为输出口时与一般的双向口使用方法相同,由准双向口结构可知:当P1口作为输入口时,必须先对它置高电平,使内部MOS管截止,因内部上拉电阻是20KΩ—40KΩ,故不会对外部输入产生影响。
若不先对它置高,且原来是低电平,则MOS管导通,读入的数据是不正确的。
2.延时子程序的延时计算问题。
对于延时程序DELAY :MOV R6, #00HDELAY1:MOV R7, #80HDJNZ R7, $DJNZ R6, DELAY1查指令表可知MOV、DJNZ指令均需用两个机器周期,而一个机器周期时间长度为12/ 6.0MHZ,所以该段指令执行时间为:((80+1)×256+1)×2×(12÷6000000)=132.1ms五、实验程序框图开始P3.3为高吗?延时P3.3真的高吗?P3.3为低吗?延时(A )+1送P1口循环N YNY NY主程序R6设初值FFHR7设初值FFH(R7)-1=0?(R6)-1=0?返回YY NN延时子承租六、实验步骤(1) P3.3用插针连至K1,P1.0—P1.7用插针连至L1—L8。
(2) 从起始地址0540H 开始连续运行程序(输入0540后按EXEC 键)。
(3)开关K1每拨动一次,L1—L8发光二极管按16进制方式加一点亮。
实验六 查表走马灯实验一、实验目的:1、掌握P3口、P1口输入/输出使用。
2、学习多分支程序的编写。
二、实验内容:1、P3.0~P3.3作为输入,连接3个拨动开关;2、P1口作为输出口,连接8个LED小灯;3、编写程序,在程序中查询P3.0~P3.3的状态,从而在LED小灯上实现8种不同的现实效果。
三、实验原理:四、实验程序流程图:五、实验步骤:1、按照“实验系统使用步骤”1~7步进行。
(第三步电路连接:P3.3~P3.0用插针连至K3~K1,P1.0~P1.7用插针连至L1~L8)2、在计算机上的“DVCC实验系统”软件中,左键单击工具栏中的“运行”按钮。
等待弹出运行窗口后,拨动开关K1~K3,查看实验现象。
3、实验结束后关闭实验箱电源和计算机,拔下连线,收起实验箱并放回原处。
实验七步进电机控制实验一、实验目的1. 了解步进电机控制的基本原理。
2. 掌握步进电机转动编程方法。
二、实验器材DVCC—52JH+实验系统,DVCC—52JH+软件,PC机,导线。
三、实验内容从键盘上输入正、反转命令,转速参数和转动步数显示在显示器上,CPU再读取显示器上显示的正、反转命令,转速级数(16级)和转动步数后执行。
转动步数减为零时停止转动。
四、实验预备知识步进电机驱动原理是通过对它每相线圈中的电流和顺序切换来使电机作步进式旋转。
驱动电路由脉冲信号来控制,所以调节脉冲信号的频率便可改变步进电机的转速,微电脑控制步进电机最适合。
五、实验程序框图从键盘输入数据,数码管显示开始执行键是否按下?显示缓冲区(7E)=1?逆时针转动一步根据显示缓冲区(7D)的内容计算延时部距数-1,送显示缓冲区步距数为0?停止顺时针转动一步(7D)内容计算延时部距数-1,送显示缓冲区步距数为0?停止NYN YN Y YN六、实验步骤(1)步进电机插头插到实验系统J3插座中,P1.0—P1.3接到BA—BD插孔。
(2)在“P.”状态下,从起始地址开始(0A30H)连续执行程序。
输入起始地址后按EXEC键。
(3)在键盘上输入数字在显示器上显示,第一位为0表示正转,为1表示反转,第二位0—F为转速等级,第三到第六位设定步数,设定完按EXEC键,步进电机开始旋转。
(4)实验结束后关闭实验箱电源和计算机,拔下连线,收起实验箱并放回原处。
参考程序1、清零1,Clear.asmorg 0000hajmp startorg 0040hstart:mov r7,#00hmov a,#00hmov dptr,#7000hnext:movx @dptr,ainc dptrdjnz r7,nextsjmp $end清零2org 0000hajmp startorg 0040h start:mov r6,#10hmov r7,#00hmov dptr,#7000hmov a,#22h next:movx @dptr,ainc dptrdjnz r7,nextdjnz r6,nextsjmp $end2、拆字:Cword.asmorg 0000hajmp startorg 0040h start:mov dptr,#7000hmovx a,@dptrmov r2,aanl a,#0f0hswap ainc dptrmovx @dptr,amov a,r2anl a,#0fhinc dptrmovx @dptr,asjmp $end3、拼字:Pword.asmorg 0000hajmp startorg 0040h start: mov dptr,#7000hmovx a,@dptranl a,#0fhswap amov r2,ainc dptrmovx a,@dptranl a,#0fhadd a,r2inc dptrmovx @dptr,asjmp $end4、数据传送org 0000hajmp startorg 0040h start:acall chushiss1:mov dph,r2mov dpl,r3movx a,@dptrinc dptrmov r2,dphmov r3,dplmov dph,r4mov dpl,r5movx @dptr,ainc dptrmov r4,dphmov r5,dpldjnz r7,ss1djnz r6,ss1sjmp $chushi:mov r6,#08hmov r7,#00hmov dptr,#6000hmov a,#22hnext:movx @dptr,ainc dptrdjnz r7,nextdjnz r6,nextmov r2,#60hmov r3,#00hmov r6,#08hmov r7,#00hmov r4,#70hmov r5,#00hretend5、P3.3口输入、P1口输出实验org 0000horg 0040h main:clr amov p1,asetb p3.3ss:jb p3.3,ss1jnb p3.3,$mov r6,#20acall delayjnb p3.3,ssajmp next ss1:jb p3.3,$mov r6,#20acall delayjb p3.3,ss next:inc amov p1,aajmp ss delay:push 07htt:mov r7,#249djnz r7,$djnz r6,ttretend6、查表走马灯实验org 0000hajmp mainorg 0040h main:mov 30h,#00hmov 31h,#0fhmov 32h,#0f0hmov 33h,#00hsetb 00hmov 34h,#00hsetb 01hmov 35h,#00hmov 36h,#55hmov 37h,#0f0hmov p3,#0ffhmov dptr,#tab next:mov a,p3anl a,#07hjmp @a+dptr tab:ajmp led0ajmp led1ajmp led2ajmp led3ajmp led4ajmp led5ajmp led6ajmp led7led0:mov p1,30hajmp nextled1:mov a,31hmov p1,arl amov 31h,aacall delayajmp nextled2:mov a,32hmov p1,amov 32h,aacall delayajmp nextled3:mov r6,#02h ss1:mov r7,#08h ss2:mov a,33hmov c,00hrlc amov p1,amov 33h,aacall delaydjnz r7,ss2cpl 00hdjnz r6,ss1ajmp nextled4:mov r6,#02h ss3:mov r7,#08h ss4:mov a,33hmov c,00hmov p1,amov 33h,aacall delaydjnz r7,ss4cpl 00hdjnz r6,ss3ajmp nextled5:mov p1,35hinc 35hacall delayajmp nextled6:mov a,36hmov p1,arr amov 36h,aacall delayajmp next led7:mov p1,37hajmp nextdelay:push 07hpush 06hpush 05hmov r5,#02htt1:mov r6,#249tt2:mov r7,#249djnz r7,$djnz r6,tt2djnz r5,tt1pop 05hpop 06hpop 07hretend7、步进电机控制实验ORG 0A30HMONIT: MOV SP,#50H MOV 7EH,#00HMOV 7DH,#02HMOV R0,#7CHMOV A,#08HMOV R4,#04HMONIT1: MOV @R0,ADEC R0DJNZ R4,MONIT1MOV A,#7EHMOV DPTR,#1FFFHMOVX @DPTR,AMOV 76H,#00HMOV 77H,#00HKEYDISP0:LCALL KEYJC DATAKEYAJMP MONIT2DATAKEY:LCALL DATAKEY1 DB 79H,7EHSJMP KEYDISP0MONIT2: CJNE A,#16H,KEYDISP0 LCALL DISPMOV A,7AHANL A,#0FHSW AP AADD A,79HMOV R6,AMOV A,7CHANL A,#0FHSW AP AADD A,7BHMOV R7,AMOV A,7EHCJNE A,#00H,MONIT4 MONIT3: MOV P1,#03H LCALL DELAY0LCALL MONIT5MOV P1,#06HLCALL DELAY0LCALL MONIT5MOV P1,#0CHLCALL DELAY0LCALL MONIT5MOV P1,#09HLCALL DELAY0LCALL MONIT5SJMP MONIT3MONIT4: MOV P1,#09HLCALL DELAY0LCALL MONIT5MOV P1,#0CHLCALL DELAY0LCALL MONIT5MOV P1,#06HLCALL DELAY0LCALL MONIT5MOV P1,#03HLCALL DELAY0LCALL MONIT5SJMP MONIT4MONIT5: DEC R6CJNE R6,#0FFH,MONIT6DEC R7CJNE R7,#0FFH,MONIT6LJMP MONITMONIT6: LCALL MONIT7 RETMONIT7: MOV R0,#79HMOV A,R6LCALL MONIT8MOV A,R7LCALL MONIT8LCALL DISPRETMONIT8: MOV R1,AACALL MONIT9MOV A,R1SW AP AMONIT9: ANL A,#0FHMOV @R0,AINC R0RETDELAY0: MOV R0,#7DH MOV A,@R0SW AP AMOV R4,ADELAY1: MOV R5,#80H DELAY2: DJNZ R5,DELAY2 LCALL DISPDJNZ R4,DELAY1RETDATAKEY1:MOV R4,AMOV DPTR,#1FFFHMOVX A,@DPTRMOV R1,AMOV A,R4MOV @R1,ACLR APOP 83HPOP 82HMOVC A,@A+DPTRINC DPTRCJNE A,01H,DATAKEY3DEC R1CLR AMOVC A,@A+DPTR DATAKEY2:PUSH 82HPUSH 83HMOV DPTR,#1FFFHMOVX @DPTR,APOP 83HPOP 82HINC DPTRPUSH 82HPUSH 83HRETDATAKEY3:DEC R1MOV A,R1SJMP DATAKEY2KEY0: MOV R6,#20HMOV DPTR,#1FFFHMOVX A,@DPTRMOV R0,AMOV A,@R0MOV R7,AMOV A,#10HMOV @R0,AKEY3: LCALL KEYDISP JNB 0E5H,KEY2DJNZ R6,KEY3MOV DPTR,#1FFFHMOVX A,@DPTRMOV R0,AMOV A,R7MOV @R0,A KEY: MOV R6,#50H KEY1: LCALL KEYDISP JNB 0E5H,KEY2DJNZ R6,KEY1SJMP KEY0KEY2: MOV R6,AMOV A,R7MOV @R0,AMOV A,R6 KEYEND: RETKEYDISP:LCALL DISP LCALL KEYSMMOV R4,AMOV R1,#76HMOV A,@R1MOV R2,AINC R1MOV A,@R1MOV R3,AXRL A,R4MOV R3,04HMOV R4,02HJZ KEYDISP1MOV R2,#88HMOV R4,#88H KEYDISP1:DEC R4MOV A,R4XRL A,#82HJZ KEYDISP2MOV A,R4XRL A,#0EHJZ KEYDISP2MOV A,R4ORL A,R4JZ KEYDISP3MOV R4,#20HDEC R2LJMP KEYDISP5 KEYDISP3:MOV R4,#0FHKEYDISP2:MOV R2,04HMOV R4,03HKEYDISP5:MOV R1,#76H MOV A,R2MOV @R1,AINC R1MOV A,R3MOV @R1,AMOV A,R4CJNE R3,#10H,KEYDISP4 KEYDISP4:RETDISP: SETB 0D4HMOV R1,#7EHMOV R2,#20HMOV R3,#00HDISP1: M OV DPTR,#0FF21H MOV A,R2MOVX @DPTR,AMOV DPTR,#DATA1MOV A,@R1MOVC A,@A+DPTRMOV DPTR,#0FF22HMOVX @DPTR,ADISP2: D JNZ R3,DISP2DEC R1CLR CMOV A,R2RRC AMOV R2,AJNZ DISP1MOV A,#0FFHMOV DPTR,#0FF22HMOVX @DPTR,ACLR 0D4HRETDATA1: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H DB 88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,89H,0DEHKEYSM: SETB 0D4HMOV A,#0FFHMOV DPTR,#0FF22HMOVX @DPTR,AKEYSM0: MOV R2,#0FEHMOV R3,#08HMOV R0,#00HKEYSM1: MOV A,R2MOV DPTR,#0FF21HMOVX @DPTR,ANOPRL AMOV R2,AMOV DPTR,#0FF23HMOVX A,@DPTRCPL ANOPNOPNOPANL A,#0FHJNZ KEYSM2INC R0 ;NOKEYDJNZ R3,KEYSM1SJMP KEYSM10 KEYSM2: CPL AJB 0E0H,KEYSM3MOV A,#00HSJMP KEYSM7KEYSM3: JB 0E1H,KEYSM4MOV A,#08HSJMP KEYSM7KEYSM4: JB 0E2H,KEYSM5MOV A,#10HSJMP KEYSM7KEYSM5: JB 0E3H,KEYSM10MOV A,#18HKEYSM7: ADD A,R0CLR 0D4HCJNE A,#10H,KEYSM9KEYSM9: JNC KEYSM10MOV DPTR,#DATA2MOVC A,@A+DPTRKEYSM10:RETDATA2: DB 07H,04H,08H,05H,09H,06H,0AH,0BH DB 01H,00H,02H,0FH,03H,0EH,0CH,0DHEND。