7.18 单片机学习总结

一.单片机I/O线

P3.0—RXD串口接收
P3.1—TXD串口发送
P3.2—INT0外部中断0
P3.3—INT1外部中断1
P3.4—T0硬启动,计数输入
P3.5—T1硬启动,计数输入
P3.6—WR—写RAM
P3.7—RD—读RAM

VCC:电源端接+5V;GND:接地端;

RST/VPD:1.复位信号的输入,2.VCC掉电后,此引脚可以接备用电源,保持RAM中的数据。
EA/VPP:EA=0,单片机访问外部ROM,EA=1的时候,单片机访问内部ROM。
ALE/PROG:第一个是作为地址锁存器允许,这里口直P0低八位地址总线AB的允许,ALE输出的频率为时钟频率的1/6。
PSEN:外部程序存储器ROM的选通信号,与OE相连。

通过将单片机的I/O引脚位进行置位或清零来点亮或关闭LED灯(and按键实验)

二. 串口通讯

单片机的串口可以使单片机与单片机、单片机与电脑、单片机与各式各样的模块互相通信

• STC89C52 有 1 个 UART

 STC89C52 的 UART 有四种工作模式:
  模式0:同步移位寄存器

  模式1:8位UART,波特率可变(常用)

  模式2:9位UART,波特率固定

  模式3:9位UART,波特率可变

有模块与单片机相连时,模块的TXD与单片机的RXD(P30)相连,模块的RXD与单片机的TXD相连

 

void UART_Init()		//串口初始化
{
	PCON &= 0x7F;		//波特率不倍速
	SCON = 0x50;		//8位数据,可变波特率
	TMOD &= 0x0F;		//设置定时器模式
	TMOD |= 0x20;		//设置定时器模式
	TL1 = 0xFD;		//设置定时初始值
	TH1 = 0xFD;		//设置定时重载值
	ET1 = 0;		//禁止定时器%d中断
	TR1 = 1;		//定时器1开始计时
	EA=1;			//开启总中断
	ES=1;			//开启串口中断
}
————————————————
版权声明:本文为CSDN博主「海啸49」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_67025806/article/details/124763383

三.定时器

作用

(1)用于计时系统,可实现软件计时,或者使程序每隔一固定时间完成一项操作

(2)替代长时间的Delay,提高CPU的运行效率和处理速度

(属于单片机的内部资源,其电路的连接和运转均在单片机内部完成)

定时器在单片机内部就像一个小闹钟一样,根据时钟的输出信号,每隔“一秒”,计数单元的数值就增加一,当计数单元数值增加到“设定的闹钟提醒时间”时,计数单元就会向中断系统发出中断申请,产生“响铃提醒”,使程序跳转到中断服务函数中执行

STC89C52RC的T0和T1均有四种工作模式:(T0,T1较为普遍的51内的定时器)

  •   模式0:13位定时器/计数器
  •   模式1:16位定时器/计数器(常用)
  •   模式2:8位自动重装模式
  •   模式3:两个8位计数器

 定时器初始化

void Timer0Init(void)
{
	TMOD &= 0xF0;		//设置定时器模式
	TMOD |= 0x01;		//设置定时器模式
	TL0 = 0x18;		//设置定时初值
	TH0 = 0xFC;		//设置定时初值
	TF0 = 0;		//清除TF0标志
	TR0 = 1;		//定时器0开始计时
	ET0=1;
	EA=1;
	PT0=0;
}

定时器中断模板

void Timer0_Routine() interrupt 1
{
	static unsigned int T0Count;
	TL0 = 0x18;		//设置定时初值
	TH0 = 0xFC;		//设置定时初值
	T0Count++;
	if(T0Count>=1000)
	{
		T0Count=0;
		
	}
}

四.中断系统

当中断功能执行时,单片机优先处理中断程序,当中断处理完成后,再回到单片机的正常程序执行中。

 

中断的优先级和嵌套

在主程序中,中断1和中断2同时出现,这时候要考虑中断的优先级。

如果在一个中断中出现了另一个中断,且第二个中断优先级比前一个中断高,这时会嵌套执行第二个中断。

8个中断请求源及其优先级:

 最高级: 外部中断0:INT0        外部中断1:INT1    

 比较级:外部中断2:INT2            外部中断3:INT3

   原籍:  定时器0          定时器1        定时器2

中断的分别介绍:

1、外部中断0:INT0  
P3.2管脚,通过控制TCON的IT0来确定下降沿或低电平触发;若IE0置1,就说明来了一个中断。EX0和EA都为1即可使用中断。

IP是自己控制中断的优先级,一般为默认即可。

2、外部中断1 
P3.3管脚,通过控制TCON的IT1来确定下降沿或低电平触发;若IE0置1,就说明来了一个中断。EX1和EA都为1即可使用中断。

IP是自己控制中断的优先级,一般为默认即可。

3、T0和 T1:定时计数器的功能
T0  P3.4管脚   T1  P3.5管脚

若是16位计数器,那么计数到65535时,就会溢出,TF0就会自动置1,发出中断请求。

4、串口中断(串口为什么使用定时器后面讲)
RX  P3.0    发送         TX  P3.1    接受

如果RI和TI中有一个大于等于1(或门),就会发出中断请求。

配置定时器

①对 TMOD 赋值,以确定 T0 和 T1 的工作方式

②根据所要定时的时间计算初值,并将其写入 TH0、TL0 或 TH1、TL1

③如果使用中断,则对 EA 赋值,开放定时器中断

④使 TR0 或 TR1 置1,启动定时/计数器定时或计数

例如:定时器0定时1毫秒

(1)TMOD的配置

高4位置0,低4位:00(定时功能)01    TMOD |= 0X01; 

使用或运算:不干扰定时器1的使用,对高4位无影响。

(2)TH0和TH1的配置:

1毫秒除以1微秒(机器周期),看看需要计数几次;需要计数1000次;65536-1000=64536;将64536转换成16进制(FC18),高8位写入TH0,高8位写入TL0;TH0=0XFC, TL0=0X18。

定时器计算软件:定时选择方式1

五.总线与系统扩展

单片机的外部扩展
首先,关于外部扩展有存储扩展、I/O扩展、T/C扩展、中断系统的扩展,其中存储扩展包括了ROM和RAM的扩展,


其次,扩展的原则—三总线原则
1)数据线与数据线相连接(P0口)
2)地址线与地址线相连接(P0口接锁存器低8位,P2口高8位地址线)
注意1:P0口通过接锁存器,为了确定使用的是地址线,而不是数据线
3)控制线与外部芯片控制线相连

六.DA/AD数模转换

CS:片选信号输入端,低电平有效,CS引脚软件置0后,表示ADC0804被选中。
RD:读信号输入端,低电平输出端有效。
WR:写信号输入端,低电平启动AD转换。

A/D

进入程序后,①CS软件置0——>②WR软件置0,启动AD——>③延时8个时钟周期以上(具体多少,可调试)——>④RD置0,开始读数据——>⑤延时几个时钟周期后(可调试)开始读取单片机芯片P1寄存器的数据

 D/A

进入程序后,①CS软件置0——>②WR软件置0,启动DAC0832——>③延时Ts时间后读取输出(Ts时间可调试)


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值