9.11学习笔记

1:免费样品的申请 AD公司,飞思卡尔公司,美芯公司等等都有免费样品的申请,也有相关芯片的资料的介绍,

这里介绍常用的网址

美芯公司的网站http://china.maximintegrated.com/

AD公司的网站:http://www.analog.com/

TI公司的网站:www.ti.com

2:keil软件的调试

打开调试窗口:Debug ->start/stop Debug Session

观察函数值的窗口:View ->watch&call stack window

观察各个I/O口的输出高低情况:Peripheral->I/O port 3

关于单片机工作的基本时序

(1)振荡周期:也称为是时钟周期,是指单片机提供时钟脉冲的震荡源周期

(2)状态周期:每个状态周期为时钟周期的两倍,是振荡周期经过二分频后得到的(频率越高,周期越短,频率越低,周期越长)

(3)机器周期:一个机器周期包含六个状态周期S1到S6,也就是12个时钟周期,在一个机器周期内,CPU可以完成一个独立的操作 (4)指令周期,它是指CPU完成一条操作所需要的全部时间,每条指令执行时间都是由一个或几个机器周期组成,在MCS-51系统中,有单周期指令,双周期指令和四周期指令

4:软件模拟看软件执行的时间: 第一步:必须要把晶振的频率改了,改成对应板子上的晶振的

频率 第二步:进行软件调试,即可

5:延时函数的设计:for语句中的两个变量类型都为unsignednt型时,内层的for语句中的变量值恒定为110时,外层for语

句中变量为多少,这个for的嵌套语句就延时多少毫秒

延时函数模版:

void delayms(uint xms)

{

      uint i,j;
       for(i = xms;i>0;i--)  
            for(j=110;j>0;j--); 
} 

 6:循环函数的模版 包含的头文件为#include<intrins.h>

示例代码:

uchar aa;
aa = 0xfe;
while(1) 
       {  
        aa = _crol_(aa,1);//循环左移 
          P0 =aa; 
       }

 作业,驱动一个喇叭,使奇数次流水灯流转的时候喇叭不叫,偶数次喇叭叫

示例代码:

#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
void delayms(uint xms);
void delays(uint x);
sbit Feng = P2^3;//定义喇叭的控制引脚

void main()
{
	uchar aa,b=1;
	aa = 0xfe;

	while(1)
		{
		while(1)
		{
		P1 = aa;
		delayms(500);//延时500ms
		if(b==10)
			b=0;
		if(b%2!=0)//如果b为偶数,执行函数
			{
				delays(2);
				Feng = ~Feng;
			}


		aa = _crol_(aa,1);
		if(aa == 0xfe)//如果P0为0xfe跳出循环
			break;

		}
		b++;
	}

}

void delayms(uint xms)
{
	uint x,y;
	for(x = xms;x>0;x--)
		for(y = 110;y>0;y--);
}

void delays(uint x)
{
	while(x--)
	{
		delayms(3);//输出的波形为300HZ
		delayms(3);
	}
}

版权所有,转载请注明链接地址:http://www.cnblogs.com/fengdashen

原文地址:https://www.cnblogs.com/fengdashen/p/3314949.html