5AT89S52单片机开发入门流水灯实验_第1页
5AT89S52单片机开发入门流水灯实验_第2页
5AT89S52单片机开发入门流水灯实验_第3页
5AT89S52单片机开发入门流水灯实验_第4页
5AT89S52单片机开发入门流水灯实验_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

5AT89S52单片机开发入门流水灯实验 5AT89S52单片机开发入门流水灯实验基础篇通过通用I/O口控制LED灯的点亮基本要求?电路图、PCB软件的使用;?单片机基本概念;?P1口的结构;?Keil C开发环境的使用;?编程器使用;?单片机工作基本原理;更高要求?汇编指令阅读?指令执行时间的计算?执行时间测试主要内容1.程序演示2.软件说明&分析3.硬件说明4.P1IO口结构5.单片机工作原理6.汇编语言&执行时间测量5.1实验操作与实验结果?通过USB电缆给单片机板子供电?观察LED D1D8工作情况从左到右依次点亮,然后从右到左依次点亮?其他LEDD9点亮+5V电源指示D10闪动在线编程器AT89C2051工作正常图5-1-1实验1中观察LED的位置5.2源程序分析void main()unsigned chari,dat;while (1)dat=0x01;for(i=0;i8;i+)P1=dat;dat=dat1;Delay();for(i=0;i1;Delay();i dat P1点亮的LED00000000111111110D1(左边第一个)10000001011111101D220000010011111011D330000100011110111D471000000001111111D8(右边第一个)循环1总结LED从左到右依次点亮I dat P1点亮的LED01000000001111111D810100000010111101D770000000111111110D1循环2总结LED从右到左依次点亮表5-1第一个for循环程序分析i变量datP1说明00x010xFE=11111110b P1端口除了i变量datP1说明00x010xFE=11111110b P1端口除了P1.0为低电平外,其他7个输出均为高电平;根据第4章我们知道P1口连接了8个LED,8个LED通过电阻接到了+5V,因此此时只有P1.0连接的D1点亮,其他7个LED熄灭;10x020xFD=11111101b通样道理,此时只有D2点亮,其他7个LED(D 1、D3D8)熄灭;20x040xFB=11111011b此时只有D3点亮,其他7个LED熄灭;30x080xF7=11110111b此时只有D4点亮,其他7个LED熄灭;40x100xEF=11101111b此时只有D5点亮,其他7个LED熄灭;50x200xDF=11011111b此时只有D6点亮,其他7个LED熄灭;60x400xBF=10111111b此时只有D7点亮,其他7个LED熄灭;70x800x7F=01111111b此时只有D8点亮,其他7个LED熄灭;低电平外,其他7个输出均为高电平;根据第4章我们知道P1口连接了8个LED,8个LED通过电阻接到了+5V,因此此时只有P1.0连接的D1点亮,其他7个LED熄灭;10x020xFD=11111101b通样道理,此时只有D2点亮,其他7个LED(D 1、D3D8)熄灭;20x040xFB=11111011b此时只有D3点亮,其他7个LED熄灭;30x080xF7=11110111b此时只有D4点亮,其他7个LED熄灭;40x100xEF=11101111b此时只有D5点亮,其他7个LED熄灭;50x200xDF=11011111b此时只有D6点亮,其他7个LED熄灭;60x400xBF=10111111b此时只有D7点亮,其他7个LED熄灭;70x800x7F=01111111b此时只有D8点亮,其他7个LED熄灭;表5-2第二个for循环程序分析i变量Dat P1说明00x800x7F=01111111b D8点亮,其他7个LED熄灭10x400xBF=10111111b D7点亮,其他7个LED熄灭20x200xDF=11011111b D6点亮,其他7个LED熄灭30x100xEF=11101111b D5点亮,其他7个LED熄灭40x080xF7=11110111b D4点亮,其他7个LED熄灭50x040xFB=11111011b D3点亮,其他7个LED熄灭60x020xFD=11111101b D2点亮,其他7个LED熄灭70x010xFE=11111110b D1点亮,其他7个LED熄灭i变量Dat P1说明00x800x7F=01111111b D8点亮,其他7个LED熄灭10x400xBF=10111111b D7点亮,其他7个LED熄灭20x200xDF=11011111b D6点亮,其他7个LED熄灭30x100xEF=11101111b D5点亮,其他7个LED熄灭40x080xF7=11110111b D4点亮,其他7个LED熄灭50x040xFB=11111011b D3点亮,其他7个LED熄灭60x020xFD=11111101b D2点亮,其他7个LED熄灭70x010xFE=11111110b D1点亮,其他7个LED熄灭具体工作波形具体工作波形(故障) 1、程序写入后,LED(D6)始终点亮,为什么?哪里的问题?如何验证?硬件?软件? 2、提示断电后再上电恢复正常思考题1.P1变量在何处定义?2.P1端口是什么?3.P1口、触发器、寄存器、锁存器的关系?4.如何改变P1的内容?5.sfr P1=0x90;?6.如何改变LED灯流动的速度?7.D 1、D8点亮的时间与其他LED(D2D6)点亮的时间相同吗?为什么?修改程序使D 1、D7点亮的时间与其他LED点亮的时间相同。 3、硬件说明-PCB部分 3、硬件说明-电原理图部分D4LED123456789RN15.1K*8+5VD5LEDD6LEDD7LEDD8LEDD1LEDD3LEDD2LEDD1D2D3D4D5D6D7D8D1D2D3D4D5D6D7D8P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7P2.0P2.1P2.2P2.3P2.4P2.5P2.6P2.7RXP3.1ALEPSENP1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7P3.3P3.2P3.5P3.4+5VRSTAP3.7P3.6X1X2VCCEA/VP31X119X218RESET9RD17WR16INT012INT113T014T115P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P0.039P0.138P0.237P0.336P0.435P0.534P0.633P0.732P2.021P2.122P2.223P2.324P2.425P2.526P2.627P2.728PSEN29ALE/P30TXD11RXD10VCC40GND20AT89S52GNDU1硬件部分要求?可以使用Protel99SE或Altium Designer?打开电原理图?打开PCB图?能够读懂对应的电路?理解电原理图、PCB图、实物之间的对应关系硬件说明-问题?问题? 1、阻排是什么?? 2、U1的地、电源怎么看不到?? 3、LED如何才能点亮? 4、P1I/O端口的结构问题 1、P1.X中的X是什么意思? 2、什么是内部总线? 3、CP是什么? 4、读引脚和读锁存器的区别? 5、什么是准双向IO口? 6、内部总线是双向的吗? 7、V是什么?读引脚指令MOV A,P1读寄存器CPL P1.X(读-修改-写) 5、单片机工作原理AT89S52单片机内部结构&资源单片机工作原理相关问题1.CPU是什么?2.时钟电路如何构成?有什么用处?3.ROM是什么?4.RAM是什么?5.什么是串行接口、并行接口?(后面讲)6.什么是中断?(后面讲)7.什么是定时器?和计数器的区别?(后面讲)8.什么是总线?AT89S52主要内部资源?FLASH8KB?RAM256B?SFR(Special FileRegister)?4个并口(每个8位)?1个串口(占用P3口的2位)?3个16bit定时器AT89S52内部存储器资源问题 1、EA是哪两个单词的缩写? 2、RAM和Flash的区别?程序存储区地址范围0x00000x1FFF大小8K=0010000000000000数据存储区应为多少?内部RAM构成?通用寄存器区(4个组)0区(00H07H)1区(08H0FH)2区(10H17H3)3区(18H1FH)由PSW中的RS1,RS0来决定用哪个工作区?可位寻址区(bit、bdata)202FH,16字节007FH,128位?用户RAM30H7FH堆栈,60H(向上增长)复位后设置SP=07H?间接寻址RAM(idata)0x800xff编译连接结果存储器使用情况 1、data=9内部数据RAM使用了9个字节; 2、xdata=0外部数据RAM没有使用; 3、code=71内部程序存储区(FLASH)使用了71(0x47)个字节5.3对程序进行调试?软件仿真?硬件仿真?调试设置断点F8单步执行F10(step over)单步执行F11(step in)全速执行F5图5-3-1软件仿真调试模式(simulator)图5-4-1汇编程序分析系统复位后5.5计算Delay函数延时汇编指令说明及执行时间计算CLR A;A清01个机器周期MOV R7,A;R7清01个机器周期C:0030CLR A1个机器周期MOV R6,A1个机器周期C:0032INC R6;R6加11个机器周期CJNE R6,#0xFF,C:0032;R6不等于0xFF则跳转到00322个机器周期INC R7;R7加11个机器周期CJNE R7,#0xFF,C:0030;R7未到0xFF则跳转到0030执行2个机器周期RET2个机器周期全部机器周期数为2+255*(2+255*(1+2)+1+2)+2=4+255*(5+255*3)=196354个机器周期。 对应时间为196354*12/11059200=全部机器周期数为2+255*(2+255*(1+2)+1+2)+2=4+255*(5+255*3)=196354个机器周期。 对应时间为196354*12/11059200=0.213s图5-5-2利用示波器测试时延长度汇编部分问题 1、MOV指令的含义? 2、CLR? 3、CJNE? 4、INC? 5、RET? 6、指令长度是什么? 7、指令长度和执行时间有什么关系? 7、深入了解程序执行过程 (1)工程中不包含Startup.a51程序时 7、深入了解程序执行过程 (2)Startup.a51代码功能?对内部RAM清0(范围00x7F)?设置堆栈指针(SP=#07H)?跳到main执行工程中包含Startup.a51程序时与不加入startup.a51模块时没有区别深入了解程序执行过程 (3)-main函数部分寄存器R5代替变量dat寄存器R4代替变量i取反输出左移1位相对于乘2,这里用累加器A的相加实现循环控制变量R4加1R4!=8则跳转到地址0x0007执行 7、深入了解程序执行过程 (4)?使用了哪9个内部RAM?5个通用寄存器R 0、R 4、R 5、R 6、R7A、P 1、SP、C(PSW的一位)?堆栈深度多少?SP初始化为0x07最大值为0x09(SP_MAX) 7、深入了解程序执行过程 (5)?参照左图?理解程序执行过程 8、Keil C软件使用 (3)?给项目添加/删除文件?仿真执行程序?单步执行、设置断点?查看变量?查看端口?查看特殊寄存器?查看汇编5.6查表法实现流水灯功能-定义数据(表格)code unsigned char tab16=0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,/90x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01;/85.6查表法实现流水灯功能-程序void main

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论