当前位置:首页 > 单片机 > 单片机
[导读] 5.1.EM78 系列八位微控器特色指令用法5.1.1.查表指令与用法EM78 系列八位微控器是利用 (1)“call",(2) 改变PC (或“tbl"),(3)“retl k" 三个步骤来查表的。其中“retl k" 是将常数 k 的值传至工作寄存

5.1.EM78 系列八位微控器特色指令用法5.1.1.查表指令与用法

EM78 系列八位微控器是利用 (1)“call",(2) 改变PC (或“tbl"),(3)“retl k" 三个步骤来查表的。其中“retl k" 是将常数 k 的值传至工作寄存器 "A" 中。

步骤 (2) 中若利用“mov 0x2,a",或“add 0x2,a" 等等指令来改变PC,则因为此等指令会將 PC (R2) 的位 8、9 清除 (在 EM78056 只清除位 8),所以查表的内容只能放在程序每个 PAGE 的較低的 256 个位址。步骤 (2) 中若利用“tbl" 指令来改变PC,则因为此指令不会將PC (R2) 的位 8、9 清除,而保留“tbl" 所在位址的位 8、9,所以查表的内容可以放在程序每个 PAGE 中的任何位址。

例:查表

table add 0x02,a ;將相对位置加入 PC 而改变了PC

retl @0x19 ;传回常数内容 19h 至 "A"

retl @0x74 ;传回常数内容 74h 至 "A"

retl @0x2e ;传回常数内容 2eh 至 "A"

retl @0x54 ;传回常数内容 54h 至 "A"

retl @0x4b ;传回常数内容 4bh 至 "A"

inc 0x18

mov a,0x18 ;欲查的内容的相对位置放在"A"

call table ;查表

mov 0x10,a ;查表得到的内容移至 R10 中

5.1.2.分 PAGE 的用法

1. 程序跳 PAGE 的用法:

EM78 系列八位微控器將其 Program Memory (ROM) 分成数个 PAGE,每个 PAGE 的长度是 1K (EM78056 除外)。R3 寄存器的位 5 (6) 是 "PAGE 选择位",当执行 "jmp" 或 "call" 指令时,"PAGE 选择位" 会被载入 Program Counter 的位 10 (11),因此当程序超过 1K (EM78056 为 0.5K)时,执行 "jmp" 或"call" 指令时,"PAGE 选择位" 正确的设定是非常重要的。下面将以 EM78256 为例来说明跳 PAGE 的方法。


例:从PAGE 1 跳转到PAGE 0

; PAGE 0, begin at 000h

049 add 0x11,a

050 mov a,@0x55

051 mov 0x05,a ;port5<-- 0x55

052 bs 0x03,5 ;select PAGE 1

053 jmp lab1 ;PAGE jump

054

; PAGE 1, begin at 400h

447

448 mov a,@0x3f

449 xor 0x12,a

450 Lab1 bc 0x06,3

451 mov a,0x05

说明:

052: 将 R3 寄存器的位 5 设为 "1" (选择 PAGE 1)。

053: Lab1 会被编译 为 "50",程序跳转至 PAGE 1 中 "Lab1" (450) 的位址。

注意:

此例中 "052" 和 "053" 是用来跳 PAGE 的,假如沒有 "052" 这行指令,则程序将跳转至"050" 的位址 (在 PAGE 0中),如此將沒有达到預期的目的。

2. 不同 PAGE 子程序呼叫的方法:

如第 1 项所述,当程序超过 1K 時,执行 "call" 指令时,"PAGE 选择位" 的设定就必须加以考虑。下面將以 EM78256 为例来说明呼叫不同 PAGE 子程序的方法。

例: 从PAGE 0调用PAGE 1中的子程序

; PAGE 0, begin at 000h

049 add 0x11,a

050 mov a,@0x55

051 mov 0x05,a ;port5<-- 0x55

052 bs 0x03,5 ;select PAGE 1

053 call Lab2 ;PAGE jump

054 bc 0x03,5 ;restore

055 jbs 0x15,2

056

; PAGE 1, begin at 400h

417

418 mov a,@0x3f

419 xor 0x12,a

450 Lab2 bc 0x06,3

451 mov a,0x05

45f ret

說明:

052: 將 R3 寄存器的位 5設为 "1" (选择 PAGE 1)。

053: Lab2 將会被編译为 "50",呼叫 PAGE 1 中 "Lab2" 子程序。

054: 將 R3 寄存器的位5 还原为 "0"。

注意:

此例中 "052" 和 "053" 是用来呼叫 PAGE 1 中 "Lab2" 的子程序,假如果沒有 "052" 這行指令,則程序將呼叫 "050" 的位址 (在 PAGE 0中),而非 "450" 的位址 (在 PAGE 1中),如此將发生錯誤。

5.1.3."BS","BC" 等指令对 I/O Port 的作用:

"BS","BC" 等指令会先有 "读" 再 "写" 的动作,例如 "bc 0x06,3" 指令是將整个 Port 6 (8PIN) 读進 CPU,执行位运算后再写至 Port 6 上。假如 Port 6 有一些 pin 是双向 I/O pin (如 P65) 時,假設当执行 "bc 0x06,3" 時P65 是输入 pin,則 P65 pin 上的内容会被读入再写至 Latch 上,覆蓋原先 Latch 上的内容。因此只要 P65 一直是输入 pin 將不会有問題,一旦 P65 切換为输出,則 Latch 上的内容將是不可預知的。

5.1.4.I/O Port读取的路径:

若仔細研究EM78系列八位微控器的I/O Port构造,就可发現在做"读"I/O Port的动作時(如"mov a,0x06"),所读入内容有两个路径来源,一是I/O pin上的内容,另一是输出Latch上的内容,而由I/O控制寄存器決定此读入的路径。

例如I/O pin设计为输入pin時(对应的I/O控制寄存器为"1"),对I/O Port做"读"的动作時,是读到pin上的内容。若I/O pin设计为输出pin時(对应的I/O控制寄存器为"0"),对I/O Port做"读"的动作時,是读到输出Latch上的内容。

5.1.5.WDT (Watchdog Timer)的使用:

WDT是微控器內部RC自振的计時器,其超時溢位(Time-out)的基本周期約18ms,WDT有与TCC共用的倍除器,使得超時溢位(Time-out)的最大周期可至約2.2sec。WDT计時的使能或禁止是可隨時由指令控制的(控制位在IOCE寄存器)。当WDT使能時,其超時溢位將使微控器发生RESET(或喚醒),"wdtc"指令是用来清除WDT,令WDT再从头计時,因此适当的使用"wdtc"指令,可使WDT不会发生RESET。当WDT被禁止時,WDT不会使微控器RESET或喚醒。要特別注意的是,Power-on之後WDT是使能的,如果該应用中並沒有使用WDT,必須在程序的前头用指令將WDT计時禁止。EM78156/256/456就是依上述所設计。

在EM78247/447/248/448/056/P156除了上述的設计外,另有一Code Option決定使能或禁止WDT,其功能如下:

1. 假如应用中有使用WDT,WDT必須以Code Option使能,則在程序中隨時可以用指令使能或禁止WDT计時。注意:Power-on之後WDT是使能的。

2. 假如应用中並沒有使用WDT,WDT可以以Code Option禁止,則WDT是永遠被禁止的,如此可省去須在程序的前头用指令將WDT计時禁止的麻煩。

5.2.基本设计规则5.2.1.设定I/O口的模式:

用户可以单独设定任一支I/O脚为输出模式(Output Mode),或是输入模式(Input Mode)。只要將每个I/O的设定写入累加器(A)中,再將累加器的内容写到I/O控制寄存器中,设定就算完成了。

例1:將PORT6设定为OUTPUT PORT。




本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

单片机是一种嵌入式系统,它是一块集成电路芯片,内部包含了处理器、存储器和输入输出接口等功能。

关键字: 单片机 编写程序 嵌入式

在现代电子技术的快速发展中,单片机以其高度的集成性、稳定性和可靠性,在工业自动化、智能家居、医疗设备、航空航天等诸多领域得到了广泛应用。S32单片机,作为其中的佼佼者,其引脚功能丰富多样,是实现与外部设备通信、控制、数据...

关键字: s32单片机引脚 单片机

在微控制器领域,MSP430与STM32无疑是两颗璀璨的明星。它们各自凭借其独特的技术特点和广泛的应用领域,在市场上占据了重要的位置。本文将深入解析MSP430与STM32之间的区别,探讨它们在不同应用场景下的优势和局限...

关键字: MSP430 STM32 单片机

该系列产品有助于嵌入式设计人员在更广泛的系统中轻松实现USB功能

关键字: 单片机 嵌入式设计 USB

单片机编程语言是程序员与微控制器进行交流的桥梁,它们构成了单片机系统的软件开发基石,决定着如何有效、高效地控制和管理单片机的各项资源。随着微控制器技术的不断发展,针对不同应用场景的需求,形成了丰富多样的编程语言体系。本文...

关键字: 单片机 微控制器

单片机,全称为“单片微型计算机”或“微控制器”(Microcontroller Unit,简称MCU),是一种高度集成化的电子器件,它是现代科技领域的关键组件,尤其在自动化控制、物联网、消费电子、汽车电子、工业控制等领域...

关键字: 单片机 MCU

STM32是由意法半导体公司(STMicroelectronics)推出的基于ARM Cortex-M内核的32位微控制器系列,以其高性能、低功耗、丰富的外设接口和强大的生态系统深受广大嵌入式开发者喜爱。本文将详细介绍S...

关键字: STM32 单片机

在当前的科技浪潮中,单片机作为嵌入式系统的重要组成部分,正以其强大的功能和广泛的应用领域受到越来越多行业的青睐。在众多单片机中,W79E2051以其卓越的性能和稳定的工作特性,成为市场上的明星产品。本文将深入探讨W79E...

关键字: 单片机 w79e2051单片机

单片机,又称为微控制器或微处理器,是现代电子设备中的核心部件之一。它集成了中央处理器、存储器、输入输出接口等电路,通过外部信号引脚与外部设备进行通信,实现对设备的控制和管理。本文将详细介绍单片机的外部信号引脚名称及其功能...

关键字: 单片机 微控制器 中央处理器

随着科技的飞速发展,单片机和嵌入式系统在现代电子设备中的应用越来越广泛。它们不仅提高了设备的智能化水平,还推动了各行各业的创新与发展。在单片机和嵌入式系统的开发中,编程语言的选择至关重要。本文将深入探讨单片机和嵌入式系统...

关键字: 单片机 嵌入式系统 电子设备
关闭
关闭