您的位置:首页 > 其它

单片机实验二

2017-12-23 22:56 127 查看
1、实验内容一

1.1、问题一:

设系统晶振为12MHz,编写一个延时1s的延时程序,并计算程序实际的延时。

1.2、问题一的代码

汇编语言代码如下:

ORG 0000H
AJMP MIAN
ORG 0100H
MIAN:ACALL DELAY
MOV P1 , #0FFH
ORG 0200H
DELAY:MOV R5 , #10
LOOP1:MOV R6 , #200
LOOP2:MOV R7 , #248
LOOP3:DJNZ R7 , LOOP3
DJNZ R6 , LOOP2
DJNZ R5 , LOOP1
RET
END


C语言代码如下:

#include <reg51.h>
void delay();
void main()
{

P1 = 0x00;
delay();
P1 = 0x0FF;
delay();
}
void delay()
{
int i,j;
for (i = 208; i > 0;i--)
for(j = 600 ; j > 0;j--)
;
}


2、实验内容二

2.1、问题二:

设实验连线如图2-1所示,设计一个系统点亮发光二极管。



图2-1

2.2、问题二的代码:

汇编语言代码如下:

ORG 0000H

AJMP START

ORG 0100H

START:MOV P1 , 00H

END

C语言代码如下:

#include <reg51.h>
void main()
{
while (1)
{
P1 = 0x00;
}
}


3、实验内容三

3.1、问题三:

实验原理如图2-1所示,用8位杜邦线将P1与J9连接,设计一个系统控制发光二极管以1秒的频率闪烁。

3.2、问题三的代码:

汇编语言代码如下:

ORG 0000H
AJMP MIAN
ORG 0100H
MIAN:MOV P1 , #00H
ACALL DELAY
MOV P1 , #0FFH
ACALL DELAY
AJMP MIAN
ORG 0200H
DELAY:MOV R5 , #10
LOOP1:MOV R6 , #200
LOOP2:MOV R7 , #248
LOOP3:DJNZ R7 , LOOP3
DJNZ R6 , LOOP2
DJNZ R5 , LOOP1
RET
END


C语言代码如下:

#include <reg51.h>
void delay();
void main()
{
while (1)
{
P1 = 0x00;
delay();
P1 = 0x0FF;
delay();
}
}
void delay()
{
int i,j;
for (i = 208; i > 0;i--)
for(j = 600 ; j > 0;j--)
;
}


4、实验内容四

4.1、问题四:

保持上述电路连接,再用一8位杜邦线将另一个8位并行口P3与J26(独立开关)连接,设计一个系统根据开关控制发光二极管的亮灭。独立按键原理图如下:



4.2、问题四的代码:

汇编语言代码如下:

ORG 0000H
AJMP MIAN
ORG 0100H
MIAN:MOV P1 , P3
ACALL DELAY
AJMP MIAN
ORG 0200H
DELAY:MOV R5 , #10
LOOP1:MOV R6 , #200
LOOP2:MOV R7 , #248
LOOP3:DJNZ R7 , LOOP3
DJNZ R6 , LOOP2
DJNZ R5 , LOOP1
RET
END


C语言代码如下:

#include <reg51.h>
void delay();
void main()
{
while (1)
{
P1 = P3;
delay();
}
}
void delay()
{
int i,j;
for (i = 208; i > 0;i--)
for(j = 600 ; j > 0;j--)
;
}


5、实验内容五

5.1、问题五:

设实验连线如图2-1所示,设计一个程序控制各个发光二极管以1s的频率依次循环亮(分别实现循环左移点亮和循环右移点亮)。

5.2、问题五的代码:

汇编语言代码如下:

ORG 0000H
AJMP MIAN
ORG 0100H
MIAN:MOV P1 , P3
ACALL DELAY
AJMP MIAN
ORG 0200H
DELAY:MOV R5 , #10
LOOP1:MOV R6 , #200
LOOP2:
4000
MOV R7 , #248
LOOP3:DJNZ R7 , LOOP3
DJNZ R6 , LOOP2
DJNZ R5 , LOOP1
RET
END


C语言代码如下:

#include <reg51.h>
#include <intrins.h>
void delay();
void main()
{
char temp = 0xFE;
while (1)
{
P1 = temp;
delay();
temp = _cror_(temp,1);
}
}
void delay()
{
int i,j;
for (i = 208; i > 0;i--)
for(j = 600 ; j > 0;j--)
;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  单片机