单片机程序流程图及源代码.doc_第1页
单片机程序流程图及源代码.doc_第2页
单片机程序流程图及源代码.doc_第3页
单片机程序流程图及源代码.doc_第4页
单片机程序流程图及源代码.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

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

文档简介

单片机上机实验报告【实验一】 端口实验,掌握通过端口编程实现数据输出和输入的方法,并观察结果。实验内容:1)输出实验:假定4个端口全部连接发光二极管,编程实现所有发光二极管同时亮,延迟一定时间(自定)后,又同时灭,如此循环。2)输入:从P0口输入某个数据到累加器A,打开观察窗口观察数据是否进入累加器A。实现方式:通过peripherals实现端口数据观察实验。程序流程图:P0,P1,P2,P3口初始化为0延时P0,P1,P2,P3各端口都设为1延时将P0到P3端口先赋值为0,调用延迟后,再赋1,然后循环执行。源代码:ORG 0000H ;程序入口地址LJMP MAIN ;跳转到主程序ORG 0300H ;主程序地址MAIN:MOV P0,#00H;MOV P1 ,#00H;MOV P2 ,#00H;MOV P3 ,#00H ;P0P3均赋值为0ACALL DEL;调用延迟MOV P0 ,#0FFH;MOV P1 ,#0FFH;MOV P2 ,#0FFH;MOV P3 ,#0FFH;P0P3均设为1MOV A,P0;将P0口值赋给累加器ACALL DEL;AJMP MAIN;跳转到主程序入口ORG 0200H; 延迟程序入口地址DEL:MOV R5,#04H;寄存器实现延迟,F3:MOV R6,#0FFH;若主频为12MHZ则F2:MOV R7,#0FFH;延时为256*256*4F1:DJNZ R7,F1; 0.26S,人眼可分辨DJNZ R6,F2;DJNZ R5,F3;RET; 从延迟程序返回END; 结束3.假设P0口外接一个数码管(共阴),如图,请在数码管上轮流显示数字09(采用软件延时)。程序流程图: 延时给P1口赋值将数码管的真值编码09依次赋给P0并调用延迟,然后循环运行程序即可。源代码:ORG 0000H; 程序入口SJMP MAIN; 跳转到主程序ORG 0300H; 主程序入口地址 MAIN:MOV P0,#0FCH; 将数码管0的编码赋给P0口 ACALL DELAY; 调用延迟,使数码管亮0持续0.33S MOV P0,#60H; show 1 ACALL DELAY; MOV P0,#0DAH; show 2 ACALL DELAY; MOV P0,#0F2H; show 3 ACALL DELAY; MOV P0,#66H; show 4 ACALL DELAY; MOV P0,#0B6H; show 5 ACALL DELAY; MOVP0,#0BEH; show 6 ACALL DELAY; MOV P0,#0E0H; show 7 ACALL DELAY; MOV P0,#0FEH; show 8 ACALL DELAY; MOV P0,#0F6H; show 9 ACALL DELAY; AJMP LOOP; 跳转到主程序入口ORG 0200H; 延迟程序入口DEL:MOV R5,#05H; 采用软件延迟,若主频为12MHz,则DEL1:MOV R6,#0FFH; 定时时间为256*256*5*1uS=0.33S, DEL2:MOV R7,#0FFH; 人眼可分辨。DEL3:DJNZ R7, DEL3;DJNZ R6, DEL2;DJNZ R5, DEL1;RET; 延迟程序返回【实验二】 定时器/计数器及中断实验 实验内容:1、假设P0口外接一个数码管(共阴),如图,请在数码管上轮流显示数字09。(采用定时器实现延时并显示数字)。实验流程图:跟实验1.3差不多,只是延迟程序改成用定时器定时,定时器采用查询方式,由于定时器本身所能定时有点短,故采用寄存器进行计数以延长时间,定时器定时50ms,50ms*10=0.5s。源程序:ORG 0000H; AJMP MAIN; 跳入主程序 ORG 0030H; 主程序地址MAIN:MOV P0,#0FCH;将1的编码值赋给 ACALL DELAY; P0并调用延迟 MOV P0,#0FCH; ACALL DELAY; MOV P0,#60H; ACALL DELAY; MOV P0,#0DAH; ACALL DELAY; MOV P0,#0F2H; ACALL DELAY; MOV P0,#66H; ACALL DELAY; MOV P0,#0B6H; ACALL DELAY; MOV P0,#0BEH; ACALL DELAY; MOV P0,#0E0H; ACALL DELAY; MOV P0,#0FEH; ACALL DELAY; MOV P0,#0F6H; 依次将19的值赋 ACALL DELAY; P0口,并调用延迟 AJMP MAIN; 跳回主程序入口DELAY: MOV R7,#0AH; 寄存器赋值计定时器定时值 AJMP DELAY1; 跳转DELAY1:MOV TMOD,#01H 选择方式1 MOV TH1,#3CH MOV TL1,#0B0H 定时器赋初值 SETB TR0; 启动T0 LOOPER:JBC TF0,PE;循环查询TF0是否置位 AJMP LOOPERPE: MOV TH0,#3CH MOV TL0,#0B0H;定时器重新赋值 DJNZ R7,LOOPER; R7减1非零则跳转 CLR TR0; 软件清零 SETB EX0; RET;2、单片机晶振为12MHZ,要求利用T1,工作方式1产生周期为2ms的方波。实验流程图: 未溢出溢出重新给定时器赋初值,并翻转P1.0定时器计数使能T1运行控制位赋初值定义工作模式 采用的是定时器查询方式,初值为65536-1ms/1us=65536-1000=64536=FC18H源代码: ORG 0000H;开始 AJMP START;跳到主程序 ORG 0030H;主程序地址START: MOV TMOD,#10H;使用T1 MOV TH1,#0FCH; MOV TL1,#18H;赋初值 SETB TR1;启动T1LOOPER: JBC TF1,PE ;循环查询TF1是否置位 AJMP LOOPER;PE: MOV TH1,#0FCH; MOV TL1,#18H;重新赋值 CPL P1.0;翻转P1.0 AJMP LOOPER;继续查询是否溢出 END;【实验三】 串口通信实验实验内容:假定P1口连接8个外围开关,不断读取P1口输入的开关量信息,并将读取的结果通过串口发送出去。其中P1口的输入信息通过Peripherals-P1口模拟,并通过serial window查看输出信息。1.发送:定义工作方式程序流程图:P1A A-SBUF,延时中断查询中断标志位未中断源代码: ORG 0000H; AJMP START; ORG 0130H;START:MOV SCON,#80H ; 选择工作在方式2 MOV PCON,#00H ; 波特率不加倍MAIN: MOV A,P1 ; MOV SBUF,A ; 将P1中的值传送给缓冲器 ACALL DEL; 调用延时WAIT: JBC TI,MAIN ;查询中断标志,若为1则转移到MAIN SJMP WAIT;DEL:MOV R5,#84H ;延时程序,若主频为12MHz,延迟为DEL1:MOV R6,#0FFH;132*256*256*1us=8.65sDEL2:MOV R7,#0FFH;DEL3:DJNZ R7, DEL3;DJNZ R6, DEL2;DJNZ R5, DEL1;RET;延迟程序返回 END;结束2. 接收 程序流程图:源代码: ORG 0000H; AJMP START; ORG 0023H ;串行口中断入口地址 AJMP SERIN; ORG 0030H;

温馨提示

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

评论

0/150

提交评论