单片机实验二

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: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--)
		;
}

猜你喜欢

转载自blog.csdn.net/chao_shine/article/details/78882764