📄 ccd.c
字号:
/************************************************
Demo files: The Simplest Program Of 08GP32
************************************************/
#include <hidef.h> //C编译器提供的头文件
Byte PORTA @0x0000; //部分寄存器标号定义
Byte DDRA @0x0004;
Byte CONFIG1 @0x001E;
Byte CONFIG2 @0x001F;
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 //标志代码段的开始
#define FRONT_DUMMY_PIXEL 40 //前哑元
#define EFFICIENT_PIXEL 2160 //有效像素
#define END_DUMMY_PIXEL 12 //后哑元
void SET_SH(void)
{
}
void CLR_SH(void)
{
}
void SET_RS(void)
{
}
void CLR_RS_AND_SET_Q(void)
{
}
void init_gp32(void) //初始化08GP32
{
asm {
sei
LDA #0x01 //CONFIG设置
STA CONFIG1
LDA #0x3D
STA CONFIG2
CLR PCTL //PLL锁相环的设置
MOV #0x01,PCTL
MOV #0x04,PMSH
MOV #0xB0,PMSL
MOV #0xFF,PMRS
BSET b_PLLON,PCTL
BSET 3,PCTL
BSET 2,PCTL
BSET b_AUTO,PBWC
BSET b_BCS,PCTL
lda #0x05 //允许IRQ中断
sta 0x1d
}
}
void main(void) {
int i,j;
init_gp32();
asm {
cli //允许中断
}
PORTA=0xFE; //初始化PORTA
DDRA=255;
while (TRUE)
{
for(i=0;i<200;i++) //延时
for (j=0;j<100;j++); PORTA=PORTA<<1; //移位,产生走马灯效果
PORTA++;
if (PORTA==0xFF)
PORTA=0xFE;
}
}
void interrupt Int_Event(void) //IRQ中断服务
{
PORTA=0xFE; //PORTA复位
asm {
lda #0x05 //清除中断标志
sta 0x1d
}
}
void dummy(void) //其他无用中断的服务程序
{
asm {
rti
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -