您当前的位置:五五电子网电子知识单片机-工控设备义隆单片机em78p153大功率轮廓灯跳机同步4回路程序 正文
em78p153大功率轮廓灯跳机同步4回路程序

em78p153大功率轮廓灯跳机同步4回路程序

点击数:7460 次   录入时间:03-04 11:44:18   整理:http://www.55dianzi.com   义隆单片机
;*****************************************
; 78p153寄存器定义
;*****************************************
 R0  == 0X0 ;间接寻址IAR
;****CONT REGISTE*************
; 7 6 5 4 3 2 1 0
; -   INT   TS   TE  PAB  PSR2 PSR1 PSR2
; PSR TCC RATE WDT RATE
; 000 1:2   1:1
; 001 1:4   1:2
; 010 1:8   1:4
; 011 1:16     1:8
; 100 1:32     1:16
; 101 1:64     1:32
; 110 1:128    1:64
; 111 1:256    1:128
;---------------------------------
; PAB 0:TCC 1:WDT
; TE TCC信号边沿选择位。0:由高到低加1。 1:由低到高加1
; TS TCC信号源 0:内部时钟。   1:外部输入(P62/TCC)
; INT 中断使能标志 0:由DISI或硬件中断屏蔽,1:由ENI/RETL使能中断。
 TCC == 0X1
 PC  == 0X2
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 STATUS == 0X3
  C   == 0
  DC  == 1
  Z      == 2
  P   == 3 ;执行SLEP时置为0
  T   == 4 ;时间溢出时置为0
  GP0 == 5 ;
  GP1 == 6 ;
  RST == 7 ;复位类型,由引脚唤醒时置1,其它复位置0
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    R4  == 0X4
    
 PORT5  == 0X5
 IOC5   == 0X5
 PORT6  == 0X6
 
 IOC6   == 0X6
 
 IOCB == 0X0B ;为0将P50,P51,P52, P60,P61,P62下拉
 IOCC == 0X0C ;为0将P60,P61,P62,   P64,P65,P66,P67漏极开路
 IOCD == 0X0D ;为0将P60,P61,P62,   P64,P65,P66,P67上拉
 ;0: 为允许使能。 1:为禁止
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 
 IOCE == 0X0E ;WDT控制器
  WDTE == 7 ;0:禁止,1:允许
  EIS == 6 ;0:P60,双向I/O口,1:外部中断管脚。此时IOC6的

BIT0置为1(输入)
       ;为“0”时,/通道被屏蔽。INT为“1

”时,可通由P6口读取其状态
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ISR == 0XF ;中断状态寄存器
 
  TCIF   == 0 ;TCC溢出时置1,软件清0
  ICIF   == 1 ;P6口输入变化置1,软件清0
  EXIF   == 2 ;外部中断,由P60/INT下降沿置1,软件清0
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 IOCF == 0XF ;中断屏蔽寄存器
 
  TCIE == 1 ;0:为中断禁止。1为中断允许
  ICIE == 2 ;
  EXIE == 3 ;
  
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;本程序的要点是计算电源频率进行计数实现同步。
 ;保证通电后基本同步开工
 a_temp  == 0x10  ;中断子程序中保存A
 tcount1 == 0x11    ;节拍计数1
 tcount2 == 0x12    ;节拍计数2
 tick    == 0x13    ;节拍常量值1

 chtb    == 0x14    ;查表序号值

 count2  == 0x15  ;定时计数值
 temp    == 0x16    ;临时计数器
 temp2   == 0x17
 code    == 0x18    ;输出代码
 lamp    == 0x19  ;用于闪烁计数
 spcode  == 0x1a  ;代表速度的代码
 stflag  == 0x1b  ;是否进入一拍标志
 ifdrim  == 0x1c  ;是否梦幻
 code2   == 0x1d  ;
 tcount3 == 0x1e
 teMP3   == 0x1f

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;开始
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 
 org 0x0
 jmp main
;;;;;;;;;;;;;;;;;;;;;;;;
;中断计数子程序
;;;;;;;;;;;;;;;;;;;;;;;;
;龙图开发网 http://www.longtoo.com   原创,转载请注明出处
 org 0x8
intext:
  MOV  a_temp,a
 bc stflag,7  ;这是是否要进入下一态的标志位
 clr port5
 clr port5    ;中断后先清0。
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;仅用于指示灯
;;;;;;;;;;;;;;;;;;;;;;;;;;;;  
 inc lamp    ;lamp是指示灯计数寄存器,也可以用别的方法

代替
 inca spcode    ;速度代码0,1,2,3。加1后代入a中
  MOV  temp2,a    ;temp2是局部变量,通过加1成为1,2,3,4。后再减1

判0的方
 djz temp2      ;式来进行指示
 jmp speed2 
speed1:
 jbc lamp,3
 jmp lampset1
 bc port6,1
 jmp lampok
lampset1:
 bs port6,1
 jmp lampok
speed2:
 djz temp2
 jmp speed3
 jbc lamp,4
 jmp lampset2
 bc port6,1
 jmp lampok
lampset2:
 bs port6,1
 jmp lampok 
speed3:
 djz temp2
 jmp speed4
 jbc lamp,5
 jmp lampset3
 bc port6,1
 jmp lampok
lampset3:
 bs port6,1
 jmp lampok 
speed4:
 jbc lamp,6
 jmp lampset4
 bc port6,1
 jmp lampok
lampset4:
 bs port6,1   ;port6,1用于指示灯
 jmp lampok

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 
lampok:
 call delay100u      ;调用廷时子程序越过0点


 jbc ifdrim,0     ;是否梦幻,ifdrim判断是否梦幻
 jmp intext2   ;有梦幻,
;;;;;;;;;;;;;;;;;;;;;;;;;;
;非梦幻子程序
;;;;;;;;;;;;;;;;;;;;;;;;;; 
intext1:
  MOV  a,code   ;输出代码
  MOV  port5,a
 djz tcount1     ;tcount1是主计数器
 jmp intend
  MOV  a,tick   ;tick中有一个常量值
  MOV  tcount1,a  ;在中断子程序内加载数据
 bs  stflag,7      ;tcount1为0要查表
 jmp intend
;;;;;;;;;;;;;;;;;;;;;;;;;;
;梦幻子程序
;;;;;;;;;;;;;;;;;;;;;;;;;;
intext2:
 djz tcount2    ;同一级亮度存在拍数由 spcode查表得到
 jmp intext21
  MOV  a,tick     ;这是一个查表得来的值

[1] [2] [3]  下一页


本文关键字:程序  义隆单片机单片机-工控设备 - 义隆单片机