产品特性
封装脚位图

功能

EM78P173N运用条记 ·
目 录
一、 干系寄存器 ................................................................................................................................... 1
1、 R1(TCC 寄存器) .............................................................................................................. 1
2、 BANK0 RF(中断状态寄存器) ........................................................................................ 1
3、 CONT(掌握寄存器) ......................................................................................................... 1
4、 IOCF(中断屏蔽寄存器)................................................................................................... 2
二、 设置TCC 寄存器步骤 ................................................................................................................... 2
三、 打算公式 ....................................................................................................................................... 2
四、 范例 ............................................................................................................................................... 2
1、 汇编........................................................................................................................................ 2
2、 C 措辞 .................................................................................................................................... 4
EM78P173N
TCC的运用
EM78P173N运用条记 · 1
EM78P173N TCC的运用
一、 干系寄存器
1、 R1(TCC寄存器)
TCC 寄存的计数值,一样平常要给一个初始值,默认值为00H。
2、 BANK0 RF(中断状态寄存器)
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
- - - - - EXIF ICIF TCIF
Bit 0 (TCIF):TCC 溢出中断标志。TCC 溢出时置“1”,通过软件清“0”
3、 CONT(掌握寄存器)
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
GP /INT TS TE PAB PSR2 PSR1 PSR0
Bit7 (GP): 通用目的读写位
Bit 6 (INT):中断许可标志
0:由“DISI”指令或硬件禁止中断
1:由“ENI”指令或“RETI”指令使能中断
该位为只读位。
Bit 5 (TS):TCC 时钟源选择位
0:内部指令周期时钟,P62 用作普通IO 口
1:TCC 引脚输入
Bit 4 (TE):TCC 旗子暗记沿选择位
0:当TCC 引脚发生由低到高的变革时R1 加1
1:当TCC 引脚发生由高到低的变革时R1 加1
Bit 3 (PAB):预分频器分配掌握位
0:TCC
1:WDT
Bit 2~Bit 0(PSR0~PSR2):TCC/WDT 分频掌握
EM78P173N
TCC的运用
2 · EM78P173N运用条记
PSR2 PSR1 PSR0 TCC Ratio WDT Ratio
0 0 0 1:2 1:1
0 0 1 1:4 1:2
0 1 0 1:8 1:4
0 1 1 1:16 1:8
1 0 0 1:32 1:16
1 0 1 1:64 1:32
1 1 0 1:128 1:64
1 1 1 1:256 1:128
4、 IOCF(中断屏蔽寄存器)
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
- - - - - EXIE ICIE TCIE
Bit0(TCIE):TCC 溢出中断使能位
0:TCC 溢出中断禁止
1:TCC 溢出中断使能
二、 设置TCC寄存器步骤
1、 给TCC 寄存器赋初值;
2、 设置CONT 寄存器(选择时钟源并设置预分频比,当预分频比分配给WDT 时,TCC
预分比为1:1);
3、 若须要实行中断功能,须设置IOCF 寄存器中的TCIE(Bit0)为1,并实行“ENI”指令。
把稳: 每次计时溢出需给TCC 赋初值(初值为0 除外)
三、 打算公式
T=(1/FOSC)Prescaler(256-TCCcnt)2(CLK=2)
T=(1/FOSC)Prescaler(256-TCCcnt)4(CLK=4)
FOSC:TCC 时钟源频率;Prescaler:TCC 预分频比;TCCcnt:TCC(R1)初始值。
例如:FOSC=3.58MHz; Prescaler=256;TCCcnt=0 ;CLK=2 时打算定时韶光T
T=(1/3.58M)256(256-0)2=36.612ms
四、 范例
1、 汇编
;
EM78P173N
TCC的运用
EM78P173N运用条记 · 3
;举例:利用TCC 定时来实现在P5 输出脉冲波形,
;P5 口每隔100ms 翻转一次。
;
;MCU: EM78P173N
;Oscillator: IRC 4MHz
;Clock:2
;WDT: disable
;事情电压: 5V
;编译软件: eUIDE 1.02.11
;
include \"大众EM78P173N.INC\公众
;===========================================================
COUNTER == 0X10 ;定时寄存器
ORG 0X00
JMP INITIAL
ORG 0X08
TCC_INT:
JBS TCIF ;是否为TCC 中断
JMP INT_RET
MOV A,@81 ;是,计时器赋初值
ADD TCC,A
INC COUNTER
MOV A,COUNTER
SUB A,@24
JBC C ;定时到没?
JMP INT_RET
CLR COUNTER ;到,清计数器
COM PORT5
INT_RET:
MOV A,@0XFE
AND ISR,A ;打消TCC 溢出中断标志
RETI
ORG 0X50
EM78P173N
TCC的运用
4 · EM78P173N运用条记
INITIAL:
WDTC
DISI
CLR COUNTER ;打消COUNTER 值
CLRA
CLR PORT5
IOW IOCE
IOW IOC5 ;PORT5 设为输出口,初始状态为低电位
MOV A,@0B00000100
CONTW ;TCC 作为定时器,选用内部指令时钟周期作为TCC 旗子暗记源
;TCC 预分频比为1:32
MOV A,@6
MOV TCC,A ;TCC 计数频率为(256-6)
;TCC overflow time = 2(1/3.58MHz)(256-6)32 = 4ms
CLR ISR ;打消中断标志
MOV A,@0B00000001
IOW IMR ;使能TCC 中断功能
ENI ;使能全局中断功能,以进入中断入口地址0X08
MAIN:
WDTC
NOP
JMP MAIN
2、 C措辞
//
//举例:利用TCC 定时来实现在P5 输出脉冲波形,
//P5 口每隔100ms 翻转一次。
//
//MCU:EM78P173N
//Oscillator: IRC 4MHz
//Clock:2
//WDT:disable
//事情电压:5V
//编译软件:eUIDE 1.03.00
EM78P173N
TCC的运用
EM78P173N运用条记 · 5
//
#include\"大众EM78P173N.H\公众 //EM78P173N 头文件
#define DISI() _asm{disi}
#define WDTC() _asm{wdtc}
#define NOP() _asm{nop}
#define ENI() _asm{eni}
#define SLEP() _asm{slep}
#define uchar unsigned char
unsigned int COUNTER ;
void main()
{
WDTC();
DISI();
COUNTER=0;
WDTCR=0; //禁止WDT
P5CR=0; //PORT5 设为输出
PORT5=0; //PORT5 输出低
_asm{
mov a,@0x04
contw //TCC 分频比设为1:32
}
TCC=6; //timer=1/4(256-6)322=4ms
ISR=0;
IMR=1;
ENI();
while(1);
}
void _intcall interrupt(void) @ int
{
// Write your code (inline assembly or C) here
if (TCIF==1)
{
EM78P173N
TCC的运用
6 · EM78P173N运用条记
ISR&=0XFE; //清TCC 中断标志位
TCC=6; //TCC 赋初值
COUNTER++; //
if (COUNTER>=25)
{
COUNTER=0;
PORT5^=0XFF; //PORT5 输出取反
}
}
}
void _intcall interrupt_l(void) @ 0x08:low_int 0
{
}








