姓名:王琳 专业:通信工程 学号:2011412517 成绩:
一 实验目的
1熟悉Keil C51集成开发环境的基本操作; 2 掌握简单C51和汇编程序的编写、调试;
二 实验内容
1掌握Keil C51集成开发环境的基本功能; 2 分别用汇编语言和C51编写清零程序。把片外RAM中的7000H-70FFH单元Keil C51内容清零。
3 分别用汇编语言和C51编写查找相同数个数程序。统计片外RAM中的7000H-700FH单元中“00H”的个数并保存在片内RAM30H单元。
三 实验原理及步骤
1 清零程序
(1)汇编程序语言程序设计框图
开始 R0=0 00送到7000H DPTR+1,R0-1 N R0=0? 结束
(2) 实验步骤
用连续或单步方式运行程序,检查7000H-70FFH单元中执行程序前后的内。容变化。
(3)把7000H-70FFH中的内容改成FF。
(4)用C51重新编写该程序,运行程序并查看结果。 2 查找相同数个数
(1)汇编语言程序设计框图
开始 字节数送R0,查找字节送R1 7000H ->DPTR 从DPTR中取数 Y 判和被查数相同否 R1+1 DPTR+1 字节数到吗? R1送30H单元 结束
(2)实验步骤
①在7000H-700FH单元中放入随机数,其中几个单元输入零。 ②用连续或单步方式运行程序。
③观察片内RAM30H的内容,应显示00H的个数。
(3)用C51重新编写该程序,运行程序并查看结果。
四 实验设计与调试
⑴清零实验程序
① 汇编语言 ②C语言
ORG 0000H #include MOV R0,#00H {char xdata *p=0x7000; MOV A ,#00H int a=0x7100-0x7000; LOOP: MOVX @DPTR,A while(a--) INC DPTR {*p=0x00; INC R0 p++; CJNE R0,#00H,LOOP } END } 实验结果:打开”memory window”窗口,双击修改7000H-70FFH单元的内容为 FF, 运行后发现7000H-70FFH单元中的内容全部被清零 。 (2)查找相同数个数程序 ①汇编语言 ②C语言 ORG 0000H #include MOV R1,#00H void main() MOV DPTR,#7000H {char sum=0; LOOP:MOVX A,@DPTR char a=0x10; CJNE A,#00H,NEXT char xdata *p1=0x7000; INC R1 char data *p2=0x30; NEXT:INC DPTR while(a--) INC R0 {if(*p1==0) CJNE R0,#00H,LOOP sum++; MOV 30H,R1 p++; END } *p2=sum; while(1); } 实验结果:片内数存30H 中显示00H个数为16 遇到问题:将文件建在桌面,程序不能正常运行。 解决方法:将文件建在D盘,重新进行编译运行程序。 五 实验总结 1 用Keil创建项目的基本过程:启动uvison ,点击project,选择new project,给工程起名字后保存,选择ATSC51,点击确定,在出现的对话框中选否。 2 (1)在单步执行时,点击view,选择registers窗口,查看寄存器的值。 (2)点击view ,选择memory windows ,双击要修改的寄存器的值进行修改。 (3)点击view ,选择memory windows 查看片外数存:在address中输入“x:单元数”后,回车 查看片内数存:在address中输入“d:单元数”后,回车 查看程存:在address中输入“c:单元数”后,回车 3 实验遇到的问题 (1) 在需要进行等待时或进行中断时返回时用while(1); (2)对实验操作不熟悉,对C语言编程掌握不熟练,还需要多加练习。 六 实验建议 希望老师带领学生在实验室中进行几节课时的演练讲解,让学生亲自动手,有一个好的入门,更熟悉操作,以便于后续实验课程的进行。 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- 69lv.com 版权所有 湘ICP备2023021910号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务