ImageVerifierCode 换一换
格式:DOCX , 页数:41 ,大小:22.72KB ,
资源ID:10951911      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-10951911.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(石家庄铁道大学单片机实验.docx)为本站会员(b****3)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

石家庄铁道大学单片机实验.docx

1、石家庄铁道大学单片机实验石家庄铁道大学单片机实验题目实验一数据区赋值(用指针、at、宏分别设计程序)实现给片内RAM 30H和片外RAM 3000H开始的16字节区域分别赋值为0x01、0x02.0x0f。At#include /atdata unsigned char buffer116 _at_ 0x30;xdata unsigned char buffer216 _at_ 0x0030;void main() unsigned inti,j; for(i=0;i16;i+) buffer1i=i; for(j=0;j16;j+) buffer2j=j; while(1);宏#includ

2、e/宏void main() unsigned inti,a,b; a=0x30; b=0x0030; for(i=0;i16;i+) DBYTEa+=i; XBYTEb+=i; while(1); 指针#include /指针void main(void)unsigned char data*p1;unsigned char xdata*p2;unsigned int i;p1=0x30;p2=0x3000;for(i=0;i16;i+)*p1=i;p1+;*p2=i;p2+;实验二数据区数据处理对30H开始的内存区数据0x010x0f进行处理:将30H开始的内容变成0x01、0x23、0x

3、45.0xef存到40H开始的单元将40H开始的内容变成0xef、0xcd.0x23、0x01存到50H开始的单元将50H开始的内容变成0x0f、0x0e、0x0d.0x01、0x00存到60H开始的单元#include#include#includedata unsigned char buffer116 _at_ 0x30;data unsigned char buffer28 _at_ 0x40;data unsigned char buffer38 _at_ 0x50;data unsigned char buffer416 _at_ 0x60;void main()unsigned

4、inti,j,k,r;for(i=0;i16;i+) buffer1i=i;/30H赋值for(j=0;j8;j+) buffer2j=buffer12*j4|buffer12*j+1;/40Hfor(k=0;k8;k+) buffer3k=buffer27-k;/50Hfor(r=1;r4; else buffer4r-1=buffer3r/2&0x0f;/60H实验三并行口实验P3.0接开关K0,设计程序实现:当K0=0时,P1口连接的8个LED灯从LED0LED7依次点亮;当K0=1时,P1口连接的8个LED灯从LED7LED0依次点亮;#include#define unchar un

5、signed charvoid delay()unchari,j; for(i=0;i255;i+) for(j=0;j255;j+);void mian()unchara,b,i;doP3=0xff;/将P3置为输入状态a=P3;a=a&0x01;/屏蔽高7位if (a=0) b=0x01; for(i=0;i8;i+) P1=b; delay(); b=b1; elseb=0x80;for(i=0;i1;while(1);根据P3.1和P3.0连接的开关K1和K0的状态实现P1口连接的8只LED灯按以下形式亮灭:K1K0亮灯008只灯全亮全灭交替01LED74和LED30交替全亮全灭10从

6、全灭状态起,8只灯从两头到中间再从中间到两头依次点亮11从全亮状态起,8只灯从两头到中间依次点灭,再从中间到两头依次点亮#include#define unchar unsigned charvoid delay()unchari,j; for(i=0;i255;i+) for(j=0;j255;j+);void mian()unchara,b,c,i;doP3=0xff; a=P3; a=a&0x03;/屏蔽高六位 switch(a) case 0: for(i=0;i2;i+) P1=0x00; delay(); P1=0x0ff; delay(); break; case 1: for(

7、i=0;i2;i+) P1=0x0f; delay(); P1=0x0f0; delay(); break; case 2: P1=0x00; for(i=0;i4;i+) b=(0x01i)&0xf0; P1=b+c; delay(); for(i=0;ii)&0x0f; c=(0x10i)&0xf0; P1=b+c; delay(); break; case 3: P1=0xff; for(i=0;i4;i+) b=(0x01i)&0xf0; P1=b+c; delay(); for(i=0;ii)&0x0f; c=(0x10i)&0xf0; P1=b+c; delay(); break;

8、 /switch结束 while(1);实验四外部中断实验1INT0中断:P1接8个LED灯,点动开关接P3.2(INT0),负跳变产生中断,编写程序实现:主程序8只LED灯一起亮灭闪烁循环往复;INT0中断程序实现8个LED灯左右点亮循环5次后退出中断。#include #include #define unchar unsigned charvoid delay()unchari,j;for(i=0;i255;i+)for(j=0;j255;j+);void main()EA=1; EX0=1; IT0=1; doP1=0x00; delay(); P1=0xff; delay(); wh

9、ile(1);void int0() interrupt 0 using 1unchark,m; k=0x80; for(m=0;m40;m+)/左点亮循环5次 P1=k; delay(); k=_cror_(k,1); INT1中断:P1接8个LED灯,点动开关接P3.2(INT0),负跳变产生中断,编写程序实现:主程序8只LED灯一起亮灭闪烁循环往复;INT0中断程序实现8个LED灯左右点亮循环5次后退出中断。#include#include#define unchar unsigned charvoid delay()unchari,j;for(i=0;i255;i+)for(j=0;j

10、255;j+);void main() EA=1; EX1=1; IT1=1; doP1=0x00; delay(); P1=0xff; delay(); while(1);void int1() interrupt 2 using 2unchara,b,c; EX1=0; a=0x80; for(b=0;b5;b+) /左右点亮循环5次 for(c=0;cc; delay(); for(c=0;c8;c+) P1=0x01INT1,但进入中断后互不干扰;自然优先级下若同时触发INT0和INT1,则先响应INT0)修改程序,INT0设为低优先级,INT1设为高优先级,运行程序观察实验现象:在I

11、NT0中断程序运行中,INT1中断请求能否得到相应?(可以)在INT1中断程序运行中,INT0中断请求能否得到相应?(不可以)修改程序,INT0设为高优先级,INT1设为低优先级,运行程序观察实验现象:在INT0中断程序运行中,INT1中断请求能否得到相应?(不可以)在INT1中断程序运行中,INT0中断请求能否得到相应?(可以)解释原因,加强对中断嵌套知识的理解。(若手动设置优先级,(如PX0=1,PX1=0使INT0为高级中断、INT1为低级中断),高级中断可以打断执行中的低级中断)(实验设置目的:体会中断管理机制,理解中断嵌套规则。)#include#include#define unc

12、har unsigned charvoid delay()unchari,j;for(i=0;i255;i+)for(j=0;j255;j+);void main() EA=1; EX0=1; EX1=1; IT0=1; IT1=1; IP=0; /1.IP=0即PX0=0;PX1=1;同为低优先级 /2.PX0=0;PX1=1; /3.PX0=1;PX1=0; do P1=0x00; delay(); P1=0xff; delay(); while(1);void int0() interrupt 0 using 1unchara,b; b=0x80; for(a=0;a40;a+) P1=

13、b; delay(); k=_cror_(b,1); void int1() interrupt 2 using 2unchark,m; k=0x01; for(m=0;m40;m+) P1=k; delay(); k=_crol_(k,1); 实验六定时器实验P1接8个LED灯,点动开关接P3.2 (INT0),负跳变产生中断。编写程序实现如下功能: 主程序8只LED灯上电全灭。 INT0中断程序实现:按一次启动定时器T0,再按一次停止。停止后恢复到上电状态。 定时器T0实现:8个LED灯左点亮循环,每个点亮时间为1S。(定时器分别用中断方式和查询方式实现。)定时器初值计算:10000us=

14、216-X*12/6 得X=ec78H中断方式:#include#includeunsigned char a,i=100;void main()TMOD=0x01;TH0=0xec;TL0=0x78;P1=0x00;IT0=1;EX0=1;EA=1;IT0=1;EX0=1;ET0=1;TR0=0;while(1);void temer0() interrupt 1TH0=0xec;TL0=0x78;i-;if(i=0) P1=a; a=_cror_(a,1); i=100; void int0() interrupt 0TR0=TR0;if(TR0=0) P1=0x00;查询方式:#incl

15、ude#includeunsigned char a,i=100;void main()TMOD=0X01;TH0=0Xec;TL0=0X78;P1=0X00;IT0=1;EX0=1;EA=1;IT0=1;EX0=1;TR0=0;while(1)if(TF0)TF0=0?TH0=0Xec;TL0=0X78;i-;if(i=0) P1=a; a=_cror_(a,1); i=100; void int0() interrupt 0TR0=TR0;if(TR0=0) P1=0x00;实验七定时器计数器综合实验P1接8个LED灯,P3.7接1个LED灯,点动开关接P3.2 (INT0),负跳变产生中

16、断,P3.3 (INT1)用低电平触发中断。编写程序实现如下功能: 主程序9只LED灯上电全灭。 INT0中断程序实现:按一次启动定时器T0,再按一次停止。停止后恢复到上电状态。 INT1中断程序实现:按一次启动定时器T1,再按一次停止。停止后恢复到上电状态。 定时器T0实现:P3.7所接1个LED灯亮灭闪烁,亮灭时间各为1S。 计数器T1实现:记录由T1口所输入脉冲个数(P3.5输入下降沿),以二进制形式在P1口输出。(提示:低电平触发及时恢复高电平,以免中断重入)(计数器输入为T1(P3.5)、T0(P3.4)外部脉冲;定时器为系统时钟12分频,内部脉冲(一个机器周期1us)#includ

17、e#includeunsigned char i=100;sbit P3_7=P37;void main()TMOD=0X61;/(T1方式2.T0方式1)或2.TMOD=0X51;(T1.T0方式1)TH0=0Xec;TL0=0X78;TH1=0Xff;/或2.TH1=0X00;TL1=0Xff;/或2.TL1=0X00;P1=0X00;P3_7=0;EA=1;IT0=1;EX0=1;IT1=1;EX1=1;ET0=1;ET1=1;TR0=0;TR1=0;while(1);/或2.P1=TL1;void temer0() interrupt 1TH0=0Xec;TL0=0X78;i-;if(

18、i=0) P3_7=P3_7; i=100;void int0() interrupt 0TR0=TR0;if(TR0=0) P3_7=0;void int1() interrupt 2TR1=TR1;if(TR1=0) P1=0; void temer1() interrupt 3 / 2.TMOD=0X51;删掉该段unsigned char b;TH1=0Xff;TL1=0Xff;b+;P1=b;实验八双机串行通讯基础实验通信要求:fosc=6M,波特率2400,(提示:通讯双方工作在方式1,定时器1工作在方式2定时模式,计数初值设为:0xf3,SMOD=1。)程序设计内容:要求内部RA

19、M30H开始的16个字节内容用程序实现赋值015。用查询或中断方式实现将甲机内部RAM 30H开始的16个字节的内容发送到已机并存入内部RAM 40H开始的单元中,并同时从P1口输出。为了观察发送过程,要求每发送一个数据使甲机的P1_0连接的指示灯LED0亮灭一次。(亮灭延时时间自定,但要求能明显观察到亮灭状态转换。)温馨提示:在中断处理模式中数据发送和接收完毕后,程序执行while(1);语句,可在此处设置断点运行程序;或者执行一直让P1_0连接的LED0灯常亮的死循环程序;在查询模式下发送和接收完毕后最后执行while(1);语句,可在此处设置断点运行程序;或者执行一直让P1_0连接的LE

20、D0灯常亮的死循环程序;)。实验连线:甲机的P1.0分别接LED0,乙机P1接LED0LED7,甲机RXD接乙机TXD,甲机TXD接乙机RXD,两机共地。#include /甲发送(中断)#includedata unsigned char buffer116 _at_ 0x30;unsigned char i,temp=0,j=0;sbit P1_0=P10;void delay()unsigned char m,n;for(m=0;m255;m+)for(n=0;n255;n+);void main() for(i=0;i16;i+) buffer1i=i;P1_0=0;TMOD=0X20

21、;TH1=0xf3;TL1=0xf3;SCON=0X40;PCON=0X80;EA=1;ES=1;TR1=1;SBUF=buffer10; while(1);void serialtrp() interrupt 4TI=0; SBUF=buffer1j; delay(); P1_0=P1_0; j+; if(j=16)j=0; #include /乙接收中断#include #define uchar unsigned charuchar i,j,Hong1=0x40,a=0;void main()TMOD=0x20; TH1=0xf3; TL1= 0xf3; SCON=0x50; PCON=

22、0x80; EA=1; ES=1; TR1=1;P1=0; while(1); void serall0() interrupt 4RI=0;if(a=16) ES=0; while(1); else DBYTEHong1=SBUF; a+; P1=DBYTEHong1; Hong1+; #include /甲发送(查询1)#includedata unsigned char buffer116 _at_ 0x30;unsigned char i,temp=0,j=0;sbit P1_0=P10;void delay()unsigned char m,n;for(m=0;m255;m+)for

23、(n=0;n255;n+);void main()P1_0=0;TMOD=0X20;TH1=0xf3;TL1=0xf3;SCON=0X40;PCON=0X80;EA=1;ES=1;TR1=1;for(i=0;i16;i+)buffer1i=i;SBUF=buffer10;/可省while(1) SBUF=buffer1j; delay(); P1_0=P1_0; j+; if(j=16)j=0; while(TI=0);#include/甲发送(查询2)#include #define uchar unsigned charsbit P1_0=P10;data unsigned char bu

24、ffer16 _at_ 0x30;void delay(uchar j)uchar t; while (j-) for (t=0;t120;t+); void main()uchari,temp; TMOD=0X20; TH1=0Xf3; TL1=0xf3; SCON=0X40; PCON=0X80; TR1=1; P1_0=0; while(1) for(i=0;i16;i+) bufferi=i; temp=bufferi; SBUF=temp; while(TI=0); TI=0; P1_0=1; delay(500); P1_0=0; delay(500); #include /乙查询

25、#include #define uchar unsigned charuchar i,j,Hong1=0x40,a=0;void main()TMOD=0x20; TH1=0xf3; TL1= 0xf3; SCON=0x50; PCON=0x80;TR1=1; P1=0;for(i=0;i16;i+) while(RI=0); RI=0; DBYTEHong1=SBUF; a+; P1=DBYTEHong1; Hong1+; while(1); 实验九串行通信综合实验通信要求:fosc=6M,波特率2400,通讯双方工作在方式1,定时器1工作在方式2定时模式,计数初值设为:0xf3,SMOD=1。1、甲机通过点动开关的动作触发INT0下降沿中断,在中断程序中以查询方式向乙机发送开关K0K7的状态,设计发送程序和乙机接收程序(查询还是

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2