微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > MCU和DSP > AT89C55WD 单片机原理及应用

AT89C55WD 单片机原理及应用

时间:07-27 来源:互联网 点击:
AT89C55WD 是一个低电压,高性能CMOS 8 位单片机,片内含有20KB的可重写快速闪存存储器和只读程序和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,引脚兼容工业标准89C51和89C52芯片,采用通用编程方式,片内置通用8位中央处理器和Flash存储单元,内置功能强大的微处理器的AT89C52可为您提供许多高性价比的解决方案,适用于多数嵌入式应用系统。

AT89C55WD有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,2个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,片内时钟电路,AT89C55WD采用两种软件控制其进入省电睡眠模式的静态逻辑工作闲置方式设计,可以用RAM、定时/计数器、串行口和外部中断唤醒睡眠状态而继续工作,在睡眠模式下,RAM被冻结,其他功能全部停止,直至下个外中断触发或硬件复位方可开始运行。特别是可反复擦写的Flash存储器可有效地降低开发成本。



AT89C55WD有具有PLCC、PDIP和TQFP三种封装形式,以适应不同产品的需求。

1. 主要功能特性:

· 兼容MCS51指令系统
· 20k可反复擦写(>1000次)Flash ROM
· 32个双向I/O口
· 256x8 bit 内部RAM
· 3个16位可编程定时/计数器中断
· 时钟频率0-33MHz
· 2个串行中断
· 硬件看门狗(WDT)
· 2个外部中断源
· 可编程串行通道
· 2个读写中断口线
· 3级加密位
· 片内时钟电路
· 低功耗睡眠功能
· 4-5.5V工作电压范围   
· 软件设置睡眠外中断唤醒功能   

2. 看门狗定时器( WDT):

WDTRST的地址为: 0A6H
WDT 在 CPU 落入软件运行失控的情况下可作为一种恢复的方法。 WDT 包含一个 13 位计数器和看门狗 定时器复位 SFR ( WDTRST )。 WDT 在上电时被禁止。若想使能 WDT , 用户必须将 01EH 和 0E1H 依次写入 WDTRST 地址( 0A6H )。 当 WDT 使能后,在振荡器运行的情况下每过一个机器周期加 1 。 此后无法禁止 WDT , 除非通过复位(硬件复位或者 WDT 溢出复位)。当 WDT 溢出时它会在 RST 脚产生一个复位脉冲。   

使用 WDT

要使能 WDT , 用户必须将 01EH 和 0E1H 依次写入 WDTRST 。 当 WDT 使能后,用户需要定期将 01EH 和 0E1H 依次写入 WDTRST 以避免 WDT 。 溢出 13 位计数器在到达 8191 ( 1FFFH ) 后溢出并将芯片复位。 当 WDT 使能后,在振荡器运行的情况下每过一个机器周期加 1 。 这意味着用户必须在 8191 个机器周期内 至少复位 WDT 一次。要想复位 WDT , 用户必须将 01EH 和 0E1H 依次写入 WDTRST 。 WDTRST 是一个 只写寄存器。复位脉冲持续 98 × Tosc ( 6 时钟模式)( 12 时钟模式下为 196 ) 此处 Tosc=1/fosc 。   

下面给出一个例程:

将看门狗定时器放在T1中,每中断一次,需50ms,当计数器,计满1秒给R19加1。当主程序或子程序在10秒之内还未对R19清0,说明程序可能“跑飞”,这看门狗使能,将AT89C55WD复位,从地址0000H处开始执行。

R19 DATA 13H ;
R23 DATA 17H ;ms计数器   
T1int: ;定时(计时)器
MOV TH1, #4CH
MOV TL1, #00H ;计满重装初值(约50ms)
INC R23 ;(20次*50ms)=1000ms=1s
MOV A,R23
CJNE A,#20,T1int_01 ;计满1s向下
INC R19 ;用于看门狗定时
MOV A,R19
CLR C
SUBB A,#10
JC T1int_01 ;10秒到向下,复位
CLR EA
MOV WDTRST,#01EH ;WDT使能,13bit
MOV WDTRST,#0E1H ;TOSC=1/FOSC.
JMP $
T1int_01: RETI   

3.辅助功能寄存器 AUXR(08EH):

SRF 的地址 8EH
复位值 XXX00XX0B   
bit   
WDIDLE
DISRTO
DISALE
7
6
5
4
3
2
1
0
  
4.辅助功能寄存器1 AUXR1(0A2H):

SFR 的地址A2H
复位值xxxxxxx0B   

bit   
DPS
7
6
5
4
3
2
1
0
  
双数据指针 DPTR 结构:

双DPTR数据指针,通过对AUXR1 的DPS 位编程可实现两个DPTR 寄存器的切换。
此处,DPS 为AUXR1 的位0,用于切换指针DPTR0 和DPTR1。

选择数据指针:

DPS=0,选取DP0L,DPOH,即选择DPTR0,如 (MOV AUXR1,#00H);
DPS=1,选取DP1L,DP1H,即选择DPTR1,如 (MOV AUXR1,#01H)。
当切换DPTR0 和DPTR1 时应当通过软件来保存DPS。   

DPTR 指令

DPTR 指令根据当前AUXR1 位0的值,可作为数据指针,下面是使用DPTR 的6 个指令:

INC DPTR ;数据指针加1
MOV DPTR,#data16 ;DPTR 装载16 位常数
MOV A,@A+DPTR ;将与DPTR 相关的代码字节送入ACC
MOVX A,@DPTR;外部RAM 16 位地址的内容装入ACC
MOVX @DPTR,A;把ACC 的内容送到外部RAM 16 位地址
JMP @A+DPTR;间接跳转到与DPTR 相关的地址
可以通过寻址SFR 的低字节或高字节来寻址数据指针。   
AT89C55WD其它寄存器功能与设置和AT89C52相同。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top