📄 int.c
字号:
#include <REG935.H>
#include"..\SOURCE\general.h"
BYTE CONTRAST_ADD=0x01;
BYTE CONTRAST=0x80;
void cpuint(void)
{
// BYTE i;
//RSTSRC=0x32; //内部复位
//PT0AD=PT0AD&0xff;
P0M1=0x00; // 推挽输出 //准双向口
P0M2=0x00;
P1M1=0xae; //
P1M2=0x5d;
P2M1=0x33; //P2:0xcf,0x7e
P2M2=0xcc;
P3M1=0x00; //P3:0x03,0x00
P3M2=0x03;
POWCTRL=1;
DIVM = 0x00;//0分频
//TRIM|=0xc0;
TMOD|=0x11;//16位方式
TH0=0x20;//28036/256;
TL0=0x03;//28036%256;
TH1=0x8a;//35536/256
TL1=0xd0;//35536%256
SCON=0x50; //使能接收选择串口模式1
SSTAT=0xE0; //选择独立的Tx/Rx 中断
BRGR0=0xF0; //9600 baud @ 7.373MHz
BRGR1=0x02;
BRGCON =0x03; //使能BRG
TR0=0;
ET0=0;
TR1=0;
ET1=0;
CLR=0;
P0=0x03;
//EN=0;
DEECON=0x00;
}
void CCU_init(DWORD pwm)
{
OCB=1; // enable ports P1.6 PWM outputs
TPCR2H=0x00; // set CCU Prescaler:
TPCR2L=0x31; // divide by 100 (99+1)
TCR21=0x04; // Prescaler for Phase Locked Loop:
// Input frequency must be in range of 0.5-1Mhz
// InpFrq=PCLK/(PLLDIV+1)=(CCLK/2)/(PLLDIV+1)
// using the internal RC oscillator: CCLK=7.373MHz
// PLLDiv=6, 6+1=7 => 0.526 MHz
// using Crystal 11.0592 MHz => 0.789 MHz
CCCRB=0x01; // non-inverted PWM output on channel B
// CCCRD=0x02; // inverted PWM output on channel D
TCR20=0x80; // Start PLL, OutputMode: stop
OCB=1; // wait a machine cycle
while(PLLEN==0);// wait until PLL locked
TOR2H=0x00; // Reload Value 0x00FF=255
TOR2L=0xff; // -> PWM period
TCR21|=0x80; // update reload value
OCRBH=(pwm&0x300)>>8;
OCRBL=pwm&0xff;
// OCRBH=0x00; // initialize Duty-Cycle channel A 0x0100 => 25%
// OCRBL=EEPROM_R(CONTRAST);
// OCRBL=0x01;
TCR21|=0x80; // update duty cycle
// OCRDH=0x00; // initialize Duty-Cycle channel D 0x0100 => 25%
// OCRDL=0x0F;
// TCR21|=0x80; // update duty cycle
TCR20=0x82; // Set output mode: asymmetrical PWM
}
void delay(BYTE x)
{
BYTE i,j,k;
for(i=0;i<x;i++)
{
for(j=0;j<200;j++)
{
for(k=0;k<50;k++)
{
_nop_();
}
}
}
}
BYTE EEPROM_R(WORD addr)
{
BYTE i,addr1;
EA=0;
DEECON=0;
if(addr>0xff)
{
DEECON|=0x01;
addr1=addr%0xff;
}
else
{
DEECON&=0xfe;
addr1=addr;
}
DEEADR=addr1;
while((DEECON&0x80)==0);
i=DEEDAT;
DEECON=0;
EA=1;
return i;
}
void EEPROM_W(WORD addr,BYTE dat)
{
BYTE addr1;
EA = 0;
DEECON = 0;
if(addr>0xff) //高八位地址
{
DEECON |= 0x01;
addr1 = addr%0xff;
}
else
{
DEECON &= 0xfe;
addr1 = addr;
}
DEEDAT = dat;
DEEADR = addr1;
while((DEECON&0x80)==0);
DEECON&=0x7f;//清零数据EEPROM 中断标志
EA = 1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -