;*****************************************
; 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] 下一页
本文关键字:程序 义隆单片机,单片机-工控设备 - 义隆单片机