📄 timre.c
字号:
#include <hidef.h> //C编译器提供的头文件
Byte PORTA @0x0000; //部分寄存器标号定义
Byte DDRA @0x0004;
Byte Portb @0x0001;
Byte Ddrb @0x0005;
Byte CONFIG1 @0x001E;
Byte CONFIG2 @0x001F;
Byte T1SC @0x0020;
Byte T1CNTH @0x0021;
Byte T1CNTL @0x0022;
Byte T1MDH @0x0023;
Byte T1MDL @0x0024;
Byte SCCR1 @0x0013;
Byte SCCR2 @0x0014;
Byte SCSR @0x0016;
Byte SCDR @0x0018;
Byte BAUD @0x0019;
Byte PCTL @0x0036;
Byte PBWC @0x0037;
Byte PMSH @0x0038;
Byte PMSL @0x0039;
Byte PMRS @0x003A;
#define b_PLLON 5
#define b_AUTO 7
#define b_BCS 4
#pragma CODE_SEG DEFAULT //标志代码段的开始
void init_gp32(void) //初始化08GP32
{
asm {
sei
lDA #0x01 //CONFIG设置
STA CONFIG1
LDA #0x3D
STA CONFIG2
CLR PCTL //PLL锁相环的设置
MOV #0x01,PCTL
MOV #0x01,PMSH
MOV #0x2C,PMSL
MOV #0x80,PMRS
BSET b_PLLON,PCTL
BSET 3,PCTL
BSET 2,PCTL
BSET b_AUTO,PBWC
BSET b_BCS,PCTL
lda #0x05 //允许IRQ中断
sta 0x1d
lda #0x45
sta T1SC
lda #0x02
STA BAUD
BSET 6,SCCR1 //enable SCI
BSET 3,SCCR2 //enable receive and sendout
BSET 2,SCCR2
}
}
void main(void) {
init_gp32();
asm {
cli //允许中断
}
PORTA=0xFE; //初始化PORTA
DDRA=255;
Portb=0x00;
Ddrb=255;
while (TRUE)
{
}
}
/* interrupt here */
void T1OVER(void)
{
asm{
ldhx 0x271
sthx T1MDH
bclr 7,T1SC
}
Portb--;
asm{
rti
}
}
void dummy(void) //其他无用中断的服务程序
{
asm {
rti
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -