义隆单片机EM78P153使用
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于EM78P153S的应用设计
(V1.0)
目录
第一章EM78P153S的初识 (1)
1.1 EM78P152/3S特性 (1)
1.2 EM78P152/3S引脚 (2)
1.3 功能寄存器 (2)
1.3.1 累加器与端口控制寄存器 (2)
1.3.2中断状态寄存器与中断使能寄存器 (3)
1.3.3 操作寄存器 (4)
1.3.4 特殊功能寄存器 (6)
1.4 数据存储器的配置 (7)
1.5 休眠与唤醒 (7)
1.6 分频器 (9)
1.7 定时器/计数器TCC (9)
第二章EM78系列单片机应用软件的编辑与仿真 (11)
2.1 Simulator的下载与安装 (11)
2.2 Simulator的使用方法 (11)
2.3 Simulator系统常用命令汇总 (14)
2.4 Simulator仿真中的常见问题 (15)
第三章EM78系列单片机的汇编指令 (17)
3.1 寻址方式 (17)
3.2 伪指令 (18)
3.3 指令速查表 (18)
第四章EM78P153S应用软件设计 (20)
4.1 外部中断程序 (20)
4.2 花样灯程序 (22)
4.2.1 设计需求 (22)
4.2.2 软件设计 (23)
4.2.3 硬件设计 (37)
4.2.4 元器件明细表 (38)
第五章EM78系列单片机应用程序的烧录 (39)
5.1 程序的转换过程 (39)
5.2 烧录器与烧录软件 (40)
5.3 烧录步骤 (41)
第一章 EM78P153S的初识
EM78P152/3S是采用低功耗高速CMOS工艺设计开发的8位微控制器,它的内部有一个1024×13位一次性可编程只读存储器(OTP_ROM) ,可见1k的只读存储器(ROM)决定了应用程序不能够太多,否则应用程序机器码将无法烧录到芯片中。
硬件设计中,EM78P152/3S可以通过设置代码选项寄存器使微处理器工作在内部RC 振荡模式(IRC)下,此模式下采用上电复位模式而不需要外接时钟电路;同时利用上电自动复位而不需要外接复位电路,P63复位引脚可以直接作为输入脚使用,充分提高了微处理器端口的利用率,这样硬件应用电路极为简化,节省了硬件成本。
此外,EM78P153S单片机具有休眠模式,在一些不需要微处理器实时工作的应用场合,可以节省用电量,特别是在使用电池供电时,应用此模式可以延长电池的使用时间;另外在休眠模式下避免了微处理器在运行时受到来自外在杂波信号的干扰而导致程序跑飞。1.1 EM78P152/3S特性
EM78P152/3S的性能如表1.1所示。
1.2 EM78P152/3S 引脚
EM78P152/3S 的引脚图如图1.1,引脚功能如表1.2所示。
表1.2 EM78P152/3S 引脚功能表
引脚名称 序号
类型 功能
备注 P50~P53 1、12、13、14 I/O *通用的I/O 引脚
P60~P62 P64~P67 2、3、5 6、8、9、10
I/O *通用的I/O 引脚
*引脚状态发生改变时,从休眠模式唤醒 *可以设置为上拉
P60/INT 10 I/O *下降沿触发的外部中断引脚 P62/TCC 8 I/O *外部定时/ 计数器信号输入引脚 P63/RESET 7 I *若设置/RESET 引脚并使其保持逻辑低,器件将产生复位 *引脚状态改变时,从休眠模式唤醒 * P63 仅用作输入引脚 P64、P65 5、6 I/O *外部时钟信号输入
*晶体振荡器的输入引脚
VDD 4 — *电源正极 VSS
11
—
*电源地
1.3 功能寄存器
期望微处理器按预期的性能工作,就需要对功能寄存器进行有效的定义,这也是汇编编程初始化的基本任务。
针对EM78P153单片机,在汇编程序编写中,使用频率相对较高的寄存器有累加器A 、I/O 端口控制寄存器IOC5~IOC6、中断状态寄存器(RF )、中断使能寄存器(IOCF)。 1.3.1 累加器与端口控制寄存器
[示例1]端口数值的传送(读取一个端口的值送给另一个端口)。 源程序如下:
;*****************************************************
;DIP 输入,LED 输出
;*****************************************************
图1.1 EM78P152/3S 引脚图 EM78P153SP/N/S/J EM78P152SP/N/S/J
led==6 ;定义显示端口的地址为6
org 0x00 ;定义程序存放区的起始地址
jmp main ;跳转到主程序
org 0x50 ;声明主程序开始地址
main: mov a,@0x00;
iow led ;设定显示端口引脚全部输出
mov a,@0xff;
iow dip ;设定dip端口全部为输入
loop
coma dip ;读取dip状态并取反送a
mov led,a ;传送到端口6上面显示
jmp loop ;循环回去
;*****************************************************
end ;告知汇编器源程序结束
1、累加器A
累加器A用于内部数据传送或指令操作数暂存,它不可被寻址。寄存器之间的数据传递需要通过累加器A来过渡,即寄存器先传送给A再由A传送给另一个寄存器。
2、I/O 端口控制寄存器IOC5 ~ IOC6
I/O 端口控制寄存器IOC5 ~ IOC6:为“1”时,相关I/O 引脚置为高阻态(输入);为“0”时,相关I/O 引脚置为输出。IOC5 寄存器仅低4 位可被有效定义,IOC5 和IOC6 均为可读/写寄存器。
1.3.2中断状态寄存器与中断使能寄存器
[示例2]將寄存器0x20当做计数器,每当外部中断产生,就自动加1。
源程序如下:
;*****************************************************
;P60/INT外部中断
;將寄存器0x20当做计数器,每当外部中断产生,就自动加1
;*****************************************************
ORG 0x00 ;定义程序存放区的起始地址
CLR 0x20 ;清除计数器
JMP EXT_PRO ;跳转到主程序
ORG 0x08 ;中断的入口地址
INT_EXT:DISI ;使能中断
CLR 0x0F ;清除中断状态寄存器的标志位
INC 0x20 ;计数器加1
RETI ;返回主程序
ORG 0x50 ;主程序的开始地址
EXT_PRO: CLR 0x0F ;清除标志位
MOV A,@0x04 ;使能外部中断信号产生
IOW 0x0F ;把A的内容送给0x0F
MOV A,@0x40 ;定义P60为外部中断引脚
IOW 0x0E
ENI ;开总中断
EXT_WAIT: N OP
NOP
JMP EXT_WAIT ;循环等待外部中断