义隆单片机EM78P153使用 - 图文(5)

2019-08-30 18:31

EM78P153S使用总结 Z AND A,R (A & R)→A Z AND R,A (A & R)→R 逻辑与指令 Z AND A,k (A & k)→A Z OR A,R (A or R)→A Z OR R,A (A or R)→R 逻辑或指令 Z OR A,k (A or k)→A Z COMA R R取反→A 取反指令 Z COM R R取反→R Z XOR A,R (A⊕R)→A Z XOR R,A (A ⊕R)→R 逻辑异或指令 Z XOR A,k (A ⊕k)→A Z CLR A 0→A 累加器清除指令 Z CLR R 0→R 寄存器清除指令 RRCA R R(n) →A(n-1),R(0) →C,C→A(7) C 带进位的循环右移指令 RRC R R(n) →R(n-1),R(0) →C,C→R(7) C RLCA R R(n) →A(n+1),R(7) →C,C→A(0) C 带进位的循环左移指令 RLC R R(n) →R(n+1),R(7) →C,C→R(0) C SWAPA R R(0-3) →A(4-7),R(4-7) →A(0-3) 无 高第四位交换指令 SWAP R R(0-3)互换→R(4-7) 无 CONTR CONT→ 无 控制寄存器读指令 CONTW A→CONT 无 控制寄存器写指令 ENI 允许中断 无 开中断指令 DISI 禁止中断 无 关中断指令 INT (PC+1)→[SP], 001H→PC 无 软件中断指令 IOW R A→IOCR 无(仅用于IOC6,IO控制寄存器写指令 IOCB~IOCF) IOR R IOCR→A IO控制寄存器读指令 T,P SLEP 0→WDT,停振荡器 睡眠指令 T,P WDTC 0→WDT WDT清除指令 NOP 无操作 无 空操作指令 CALL k (PC+1)→[SP], (页, k) →PC 无 子程序调用指令 JMP k (页, k) →PC 无 无条件转移指令 DJZA R (R—1)→A, 如果为“0”跳过 无 DJZ R (R—1)→R, 如果为“0”跳过 无 条件转移指令 JZA R (R+1)→A, 如果为“0”跳过 无 JZ R (R+1)→R, 如果为“0”跳过 无 RET [堆栈顶] →PC,子程序返回 无 子程序返回指令 RETL k k→A, [堆栈顶] →PC 无 RETI [堆栈顶] →PC,中断返回 无 中断子程序返回指令 查表指令(EM78P447、TBL (R2+)→R2,R2的8~9位不改变 Z,C,DC<注4> 451、458/459才有) BC R,B 0→R(B) 无(不建议用于RF) 位清除指令 BS R,b 1→R(b) 无(不能用于RF操作) 位设置指令 JBC R,b 如果R(b)=0, 跳过 无 条件转移指令 JBS R,b 如果R(b)=1, 跳过 无 逻辑运算指令 控制类指令 转移类指令 位指令 19

EM78P153S使用总结 第四章 EM78P153S应用软件设计

通过阅读EM78P153S在实际应用中的程序,来了解它的使用特点和注意事情,便于初学者快速掌握EM78P153S的使用技巧。

4.1 外部中断程序

;****************************************************************** ;标题:EM78P153 外部中断范例程式 “EM78P153_EXINT_DEMO.DT”

;功能:没有外部中断时P5.1口的LED每一秒闪一次,当按下P6.0口的按键后, ; P5.1的LED长亮,同时P5.2口的LED闪烁八次,然后回到初始状态。 ;******************************************************************

;------------------------------------------------ ; Include File

;------------------------------------------------

INCLUDE \ ;寄存器定义头文件 STATUS==0x03

; 要使用153的外部中断只需要执行指令“mEX_INT153”。 mEX_INT153 Macro ;外部中断控制字的设定 IOR IOC6 ;把P6.0设置为输入脚 OR A,@0x01 IOW IOC6 IOR IOCD ;P6.0设置为内部上拉 AND A,@0xFE IOW IOCD IOR IOCE ;P6.0设置为外部中断脚 OR A,@0x40 IOW IOCE IOR IOCF ;使能外部中断 OR A,@0x04 IOW IOCF NOP NOP ENI ;开中断 ENDM

; 要使用153的清RAM只需要执行指令“m153ClrRamBank”。 m153ClrRamBank Macro

MOV A,@0x10 ;从10H开始清 MOV RSR,A ;地址0x04 $_ClrLoop:

CLR R0 INC RSR JBC RSR,5 JBS RSR,4 JMP $_ClrLoop ENDM

;------------------------------------------------ ; Define MCU RAM or Variable Value ;------------------------------------------------ TEMP_A == 0x20 TEMP_S == 0x21 FLAG == 0x22

20

EM78P153S使用总结 COUNT1 == 0x23 COUNT2 == 0x24 FLASH_TIMES == 0x25 DATA_USER == 0x26

;=============================================== ORG 0x00 JMP MAIN

ORG 0x08 ;中断入口地址 JMP EX_INT ;中断子程序 ORG 0x10

;------------------------------------------------- EX_INT:

MOV TEMP_A,A ;保存A寄存器的内容 SWAP TEMP_A

SWAPA STATUS ;保存状态寄存器的内容 MOV TEMP_S,A

JBS ISR,EXIF ;判断是否为外部中断 RETI ;不是外部中断,退出 BS FLAG,0 ;中断服务程序段

MOV A,@0x08 ;设标志位及LED闪烁次数 MOV FLASH_TIMES,A

CLR ISR ;清中断状态寄存器

SWAPA TEMP_S ;恢复状态寄存器的内容 MOV STATUS,A

SWAPA TEMP_A ;恢复A寄存器的内容 RETI ;退出中断 ;------------------------------------------------- INIT:

m153ClrRamBank ;清所有RAM的宏调用 MOV A,@0B00000000 ;定义PORT5为输出脚 IOW IOC5

MOV A,@0B00000000 ;初始化PORT5输出\ MOV PORT5,A RET ;-------------------------------------------------- DELAY1S:

MOV A,@250 ;LED闪烁时间,测试的时候可以将值设为1 MOV COUNT1,A ;设置外循环变量的初值 DELAY1:

MOV A,@245 ;测试的时候可以将值设为1,以便观察 MOV COUNT2,A ;设置内循环变量的初值 DJZ COUNT2 ;结果为零则跳过下一条指令 JMP $-1 DJZ COUNT1 JMP DELAY1 RET

;================================================ MAIN:

CALL INIT ;调初始化子程序 OPEN_INT:

mEX_INT153 ;调外部中断设定宏,启动外部中断 FLASH_LED:

JBC FLAG,0

JMP INT_WORK ;有中断,P5.2的LED每一秒闪一次 BS PORT5,1 ;无中断,P5.1的LED每一秒闪一次 CALL DELAY1S

21

EM78P153S使用总结 BC PORT5,1 CALL DELAY1S JMP FLASH_LED INT_WORK:

BS PORT5,1 ;长亮P5.1口的LED BC FLAG,0

DISI ;禁止在P5.2的LED闪烁期间发生中断 INT_WORK1:

BS PORT5,2 ;P5.2的LED闪烁8次 CALL DELAY1S BC PORT5,2 CALL DELAY1S

DJZ FLASH_TIMES JMP INT_WORK1

CLR ISR ;清掉按键抖动及闪烁期间按键引起的中断标志 JMP OPEN_INT

;*************************************************************************** END

对于“宏”的使用说明:

本程序中调用了两个宏,这样可以增强程序的可读性。使用宏时,需要将 “宏”定义在程序存放的起始位置之前,调用时只需要输入宏名字。也可以自己定义功能宏,如实现判断功能、跳转功能、选择功能等。

4.2 花样灯程序

4.2.1 设计需求

微处理器:EM78P153S

四个输入量:开关输入S1、S2、S3,光敏检测三极管V9。

八个输出量:Led1、Led2、Led3、Led4、Led5、Led6、Led7(Led8)、HL1(HL2、HL3)。

功能要求:

1、对S1的操作(S1低电平时,Led1—8均为中等亮度工作情形)

(1)当第一次按下S1时,进行光敏检测,若有光照则不进行操作,指示灯Led1、Led2、Led3、Led4、Led5、Led6和Led7、Led8不亮;若无光照则指示灯Led1、Led2、Led3、Led4、Led5、Led6和Led7、Led8中等亮度常亮,此时只检测S1、S2、S3三个按键是否按下,而不再进行光敏检测;

(2)当第二次按下S1时,指示灯Led1、Led2、Led4、Led5与Led3、Led6、Led7、Led8循环间隔亮1s;

(3)当第三次按下S1时,指示灯Led1、Led2、Led3、Led4、Led5、Led6闪亮,点亮时间0.5s;

22

EM78P153S使用总结 (4)当第四次按下S1时,指示灯Led1、Led2、Led3、Led4、Led5、Led6闪亮,点亮时间1s;

(5)当第五次按下S1时,指示灯Led1—Led2—Led3、Led2—Led3—Led4、Led3—Led4—Led5、Led4—Led5—Led6、Led5—Led6—Led1、Led6—Led1—Led2依次点亮100ms,呈顺时针转动的闪亮;

(6)当第六次按下S1时,指示灯Led1—Led6—Led5、Led6—Led5—Led4、Led5—Led4—Led3、Led4—Led3—Led2、Led3—Led2—Led1、Led2—Led1—Led6依次点亮100ms,呈逆时针转动的闪亮;

(7)当第七次按下S1时,指示灯Led1、Led2、Led3、Led4、Led5、Led6和Led7、Led8循环间隔亮1s;

(8)当第八次按下S1时,指示灯Led1、Led3、Led5和 Led2、Led4、Led6循环间隔亮1s,呈旋转亮;

(9)当第九次按下S1时,指示灯Led1、Led2、Led3、Led4、Led5、Led6、Led7、Led8全部熄灭。

2、对S2(等价刹车)的操作(Led1—8均为高亮工作情形)

当S2低电平有效时,Led1、Led2、Led3、Led4、Led5、Led6、Led7、Led8全部点亮,呈现高亮工作情形。直到S2解除时,恢复S2有效前的显示状态。

3、对S3的操作(HL 共增加到3个,HL1—HL3,其中HL1用来投射自行车的标志用)

(1)当第一次按下S3时,指示灯HL1、HL2、HL3以中等亮度常亮。

(2)当第二次按下S3时,指示灯HL1、HL2、HL3间隔点亮1s,呈中等亮度的闪亮状态。此时,Led1—8按原有模式工作。

(3)当第三次按下S3时,指示灯HL1、HL2、HL3熄灭,Led1—8按原有模式工作。 4.2.2 软件设计

;******************************************************************

;******************************************************************

;标题:EM78P153 花样灯程式 “EM78P153_HuaYangDeng.DT” ;说明:程序是在WicePlus编译软件中通过的,

而在Simulator中调试时需要屏蔽一些子程序,做些适当的修改才行。 ;****************************************************************** INCLUDE \ ;寄存器定义头文件 ; 要使用153的清RAM只需要执行指令“m153ClrRamBank”。 m153ClrRamBank Macro

MOV A,@0x10 ;从10H开始清 MOV RSR,A ;地址0x04 $_ClrLoop:

23


义隆单片机EM78P153使用 - 图文(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:中国共产党在新民主主义革命时期土地政策

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: