求助 义隆单片机
时间:10-02
整理:3721RD
点击:
最近在学习使用义隆单片机 可是在用euide编译的时候总出现
Cpp: Input buffer overflow!
请各位大神帮助,有什么好的开发经验,可以提一下 ,谢谢!附程序
#include"EM78P153S.H"
#define DISI()_asm{disi}
#define WDTC()_asm{wdtc}
#define NOP()_asm{nop}
#define ENI()_asm{eni}
#define SLEP()_asm{slep}
#define uchar unsigned char
#define Trig_s R65//相当于51中的位定义
#define Trig_r R64
#define ccc R63
unsigned int COUNTER;
unsigned int temp;
bit Trig_q;
bit L1;
bit flag;
bit flag2;
void Init()
{
P6CR=0x38; //PORT6设为输出
P6CR=0x38; //PORT6设为输出
R60 = 0;
R61 = 0;
R62 = 0;
Trig_q = 0;
COUNTER=0;
flag = 0;
}
void main()
{
WDTC();
DISI();
//ODCR = 0x30; //漏极开路控制寄存器
WDTCR=0; //禁止WDT
_asm{
mov a,@0x04
contw //TCC分频比设为1:32
}
TCC=6; //timer=1/4*(256-6)*32*2=4ms
ISR=0; //清TCC中断标志位
IMR=0x01; //开定时器中断
ENI();
Init();
while(1)
{
Trig_q = (!Trig_s)||(Trig_r&&Trig_q);//RS触发器的方程
R60 = Trig_q;
L1 = Trig_q&&ccc;//与另外一个变量进行逻辑与运算
if(L1 == 1) //如果运算结果为1
{
R61 = 1;//输出高电平
R62 = 1; //输出高电平
temp = 0;
}
else
{
if(flag == 1 )//30秒标志位
{
flag = 0;
R61 = 0;
}
if(flag2 == 1)//45秒标志位
{
flag2 = 0;
R62 = 0;
}
}
}
}
void _intcall interrupt(void) @ int//定时器中断服务程序
{
// Write your code (inline assembly or C) here
if(TCIF==1)
{
ISR&=0XFE; //清TCC中断标志位
TCC=6; //TCC赋初值
COUNTER++;
if(COUNTER>=25)
{
COUNTER=0;
temp++;
if(temp >=30)
{
//temp = 0;
flag = 1;
}
if(temp >=45)
{
temp = 0;
flag2 = 1;
}
}
}
}
void _intcall interrupt_l(void) @ 0x08:low_int 0
{}
Cpp: Input buffer overflow!
请各位大神帮助,有什么好的开发经验,可以提一下 ,谢谢!附程序
#include"EM78P153S.H"
#define DISI()_asm{disi}
#define WDTC()_asm{wdtc}
#define NOP()_asm{nop}
#define ENI()_asm{eni}
#define SLEP()_asm{slep}
#define uchar unsigned char
#define Trig_s R65//相当于51中的位定义
#define Trig_r R64
#define ccc R63
unsigned int COUNTER;
unsigned int temp;
bit Trig_q;
bit L1;
bit flag;
bit flag2;
void Init()
{
P6CR=0x38; //PORT6设为输出
P6CR=0x38; //PORT6设为输出
R60 = 0;
R61 = 0;
R62 = 0;
Trig_q = 0;
COUNTER=0;
flag = 0;
}
void main()
{
WDTC();
DISI();
//ODCR = 0x30; //漏极开路控制寄存器
WDTCR=0; //禁止WDT
_asm{
mov a,@0x04
contw //TCC分频比设为1:32
}
TCC=6; //timer=1/4*(256-6)*32*2=4ms
ISR=0; //清TCC中断标志位
IMR=0x01; //开定时器中断
ENI();
Init();
while(1)
{
Trig_q = (!Trig_s)||(Trig_r&&Trig_q);//RS触发器的方程
R60 = Trig_q;
L1 = Trig_q&&ccc;//与另外一个变量进行逻辑与运算
if(L1 == 1) //如果运算结果为1
{
R61 = 1;//输出高电平
R62 = 1; //输出高电平
temp = 0;
}
else
{
if(flag == 1 )//30秒标志位
{
flag = 0;
R61 = 0;
}
if(flag2 == 1)//45秒标志位
{
flag2 = 0;
R62 = 0;
}
}
}
}
void _intcall interrupt(void) @ int//定时器中断服务程序
{
// Write your code (inline assembly or C) here
if(TCIF==1)
{
ISR&=0XFE; //清TCC中断标志位
TCC=6; //TCC赋初值
COUNTER++;
if(COUNTER>=25)
{
COUNTER=0;
temp++;
if(temp >=30)
{
//temp = 0;
flag = 1;
}
if(temp >=45)
{
temp = 0;
flag2 = 1;
}
}
}
}
void _intcall interrupt_l(void) @ 0x08:low_int 0
{}
义隆用C,以前都是用汇编 的。
对 用汇编好点 可是我汇编没有C用的好 所以没办法