单片机广告灯试验_第1页
单片机广告灯试验_第2页
单片机广告灯试验_第3页
全文预览已结束

下载本文档

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

文档简介

《单片机基础》第1次实验报告实验内容实验十广告灯实验(实验手册P28页)姓名学号班级实验准备:按要求完成以下步骤:1、汇编源程序“ZYADV.ASM”已粘贴在下方,看懂源程序后对每条指令加上注释信息,注释信息以分号开始,将注释信息的字体设置为‘绿色’。RG0MAIN: MOV DPTR,#TAB ;转移表首地址送数据指针DPTR MOV R5,#71H ;把循环次数71H送到R5中LOOP: MOV A,#00H ;00H送入A中 MOVC A,@A+DPTR;将表中第一个数据取出送入A中 MOV P1,A ;将A中数据从P1口输出 ACALL DELAY ;调用延时子程序 ACALL DELAY ;调用延时子程序 INC DPTR ;DPTR后移,指向下一个地址单元 DJNZ R5,LOOP ;判断循环是否结束,若R5自减1不等于0,则继续循环,否则顺序执行 LJMP MAIN ;跳到主函数DELAY: MOV R7,#00H ;将00H送到R7中,控制内循环次数 MOV R6,#00H ;将00H送到R6中,控制外循环次数DE: DJNZ R7,$ ;判断内循环是否结束,R7自减1不为0,本地跳转,否则顺序执行 DJNZ R6,DE ;判断外循环是否结束,R6自减1不为0,跳到DE处,否则顺序执行 RET;子程序返回TAB: DB 0FEH, 0FDH, 0FBH, 0F7H, 0EFH, 0DFH, 0BFH, 7FH DB 0FFH, 7FH, 0BFH, 0DFH, 0EFH, 0F7H, 0FBH, 0FDH DB 0FEH, 0FFH, 0FEH, 0FCH, 0F8H, 0F0H, 0E0H, 0C0H DB 80H, 00H, 80H, 0C0H, 0E0H, 0F0H, 0F8H, 0FCH DB 0FEH, 0FFH, 7FH, 3FH, 1FH, 0FH, 07H, 03H DB 01H, 00H, 01H, 03H, 07H, 0FH, 1FH, 3FH DB 7FH, 0FFH, 7EH, 3CH, 18H, 00H, 18H, 3CH DB 7EH, 0FFH, 0FEH, 0FCH, 0FCH, 0F9H, 0F3H, 0E7H DB 0CFH, 9FH, 3FH, 7FH, 0FFH, 7FH, 3FH, 9FH DB 0CFH, 0E7H, 0F3H, 0F9H, 0FCH, 0FEH, 0FFH DB 0FEH, 0FCH, 0F8H, 0F0H, 0E0H, 0C0H, 80H, 00H DB 80H, 40H, 20H, 10H, 08H, 04H, 02H, 01H, 00H DB 01H, 02H, 04H, 08H, 10H, 20H, 40H, 80H, 00H DB 80H, 0C0H, 0E0H, 0F0H, 0F8H, 0FCH, 0FEH, 0FFH ENDC语言程序#include<reg51.h>voidmain(void){//定义花样数据constunsignedchartab[113]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F,0xFF, 0x7F,0xBF,0xDF,0xEF,0xF7, 0xFB,0xFD,0xFE,0xFF,0xFE,0xFC, 0xF8,0xF0,0xE0,0xC0,0x80,0x00,0x80,0xC0,0xE0,0xF0,0xF8, 0xFC, 0xFE,0xFF,0x7F,0x3F,0x1F,0x0F,0x07,0x03,0x01,0x00,0x01,0x03, 0x07,0x0F,0x1F, 0x3F,0x7F,0xFF,0x7E,0x3C,0x18,0x00,0x18, 0x3C,0x7E,0xFF,0xFE,0xFC,0xFC,0xF9,0xF3,0xE7,0xCF,0x9F,0x3F,0x7F, 0xFF,0x7F,0x3F,0x9F,0xCF, 0xE7,0xF3,0xF9,0xFC,0xFE,0xFF,0xFE,0xFC, 0xF8,0xF0,0xE0,0xC0,0x80,0x00,0x80,0x40,0x20,0x10,0x08,0x04, 0x02,0x01,0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x00, 0x80,0xc,0xE0,0xF0,0xF8,0xFC,0xFE,0xFF}; unsignedinta;//定义延迟变量 unsignedchardatab;//定义循环变量 do { for(b=0;b<113;b++) {for(a=0;a<30000;a++);//延迟一段时间 P0=tab[b];//读取已定义的花样数据并将数据传给P0口 } }while(1);}2、观察实验现象,阅读源程序,思考并回答以下问题。(1)将程序正确下载到实验箱后,观察程序全速运行的现象。思考灯的闪烁有何规律?源程序是如何控制灯闪烁的?答:LED灯先从L7到L0顺序点亮,再从L0到L7顺序点亮,再从两边往中间亮,又从中间往两边亮。(2)按F10功能键进行单步执行程序,观察流程是否会进入表格首地址。答:通过观察,会进入表格首地址。(3)在单步执行程序过程中,观察灯闪烁的规律,思考LED灯是“共阳极”接法,还是“共阴极”接法?答:由于送0时,LED点亮,送1时LED灯灭,所以LED灯是“共阳极”接法(4)思考源程序中寄存器R5的初值为何是“71H”?“ACALLDELAY”指令为何调用两次,如果只调用一次现象有何改变?答:因为71H转换成十进制为113,TAB表格中共有113个数据,故循环次数R5初值为113(71H);ACALLDELAY”指令调用两次是为了增加延时,便于观察灯的亮灭;如果只调用一次,LED灯将闪烁得更快。(5)假设单片机实验箱的晶振频率为12MHz,请计算DELAY标号开始的延时程序具体延时了多长时间?写出计算公式。并思考,如果需要控制灯闪烁加快,或者减慢应如何修改程序?DELAY: MOV R7,#00H ;1us MOV R6,#00H ;1usDE: DJNZ R7,$ ;2us DJNZ R6,DE ;2usRET答:如果需要控制灯闪烁加快可以多调用几次延迟子程序,可以在延迟子程序中多嵌套几层循环;若要减慢灯的闪烁,可以减小R7、R6的初值,可以只调用一次延迟子程序,可以在延迟子程序中只用一层循环。假设单片机实验箱时钟频率为12MHz,使用单片机的定时器T0,编程控制灯闪烁周期为100ms,将汇编源程序粘贴在此处。RG0MAIN:MOVTMOD,#01HMOVTH0,#3CHMOVTL0,#0B0HSETBTR0MP1:MOV DPTR,#TAB MOV R5,#71H MOV R1,#02HMP2:MOV A,#00H MOVC A,@A+DPTRJBCTF0,$MOVTH0,#3CHMOVTL0,#0B0HJBCTF0,$MOVTH0,#3CHMOVTL0,#0B0H MOV P1,A INC DPTR DJNZ R5,MP2 LJMP MP1 TAB: DB 0FEH, 0FDH, 0FBH, 0F7H, 0EFH, 0DFH, 0BFH, 7FH DB 0FFH, 7FH, 0BFH, 0DFH, 0EFH, 0F7H, 0FBH, 0FDH DB 0FEH, 0FFH, 0FEH, 0FCH, 0F8H, 0F0H, 0E0H, 0C0H DB 80H, 00H, 80H, 0C0H, 0E0H, 0F0H, 0F8H, 0FCH DB 0FEH, 0FFH, 7FH, 3FH, 1FH, 0FH, 07H, 03H DB 01H, 00H, 01H, 03H, 07H, 0FH, 1FH, 3FH DB 7FH, 0FFH, 7EH, 3CH, 18H, 00H, 18H, 3CH DB 7EH, 0FFH, 0FEH, 0FCH, 0FCH, 0F9H, 0F3H, 0E7H DB 0CFH, 9FH, 3FH, 7FH, 0FFH, 7FH, 3FH, 9FH DB 0CFH, 0E7H, 0F3H, 0F9H, 0FCH, 0FEH, 0FFH

温馨提示

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

评论

0/150

提交评论