cad联盟网激光切割图纸:求高手修改程序

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/27 19:50:05
#define p_ioa_data (volatile unsigned int *)0x7000//定义A口数据单元
#define p_ioa_dir (volatile unsigned int *)0x7002 //定义A口方向向量单元
#define p_ioa_attrib (volatile unsigned int *)0x7003 //定义A口属性向量单元
#define p_iob_data (volatile unsigned int *)0x7005 //定义B口数据单元
#define p_iob_dir (volatile unsigned int *)0x7007 //定义B口方向向量单元
#define p_iob_attrib (volatile unsigned int *)0x7008 //定义B口属性向量单元
#define p_watchdog_clear (volatile unsigned int *)0x7012
#define p_timera_data (volatile unsigned int *)0x700A //用于向16位预置寄存器写入计数初值或读取数据
#define p_timera_ctrl (volatile unsigned int *)0x700B //用b0~b5来选择TimerA的时钟源,b6~b9来选择占空比
#define timerb_clka_1 0x0005 //定义时钟源A频率为1
#define timera_clkb_1k 0x0008 //定义时钟源B频率为1024Hz
#define timera_startdata 0xfdff
#define p_int_ctrl (volatile unsigned int *)0x7010 //中断控制寄存器
#define p_int_clear (volatile unsigned int *)0x7011 //清中断标志寄存器
int LED[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7C,0x39,0x5e,0x79,0x71};
int dig[4]={0x04,0x08,0x10,0x20};
unsigned int k1=0x00e0,k2=0,k3=0;
int main()
{
int i=0;
int j;
unsigned int k[4];
int *p,*q;
q=LED; p=dig; *p_ioa_dir=0xffff; *p_ioa_attrib=0xffff; *p_iob_dir=0xffff; *p_iob_attrib=0xffff; *p_timera_data=timera_startdata; *p_timera_ctrl=timerb_clka_1+timera_clkb_1k; *p_int_ctrl=0x1000; asm("INT IRQ");
k2=k1;
k3=k1;
k[0]=k3/0x1000;
k3=k3%0x1000;
k[1]=k3/0x100;
k3=k3%0x100;
k[2]=k3/0x10;
k3=k3%0x10;
k[3]=k3;
*p_watchdog_clear=0x01;
while(1)
{ if(k1!=k2)
{k2=k1;
k3=k1;
k[0]=k3/0x1000;
k3=k3%0x1000;
k[1]=k3/0x100;
k3=k3%0x100;
k[2]=k3/0x10;
k3=k3%0x10;
k[3]=k3;
}
*p_watchdog_clear=0x01;
*p_iob_data=*(p+i);
*p_ioa_data=*(q+k[i]);
for(j=0;j<200;j++)
{ *p_int_ctrl=0x1000;
*p_watchdog_clear=0x01;
}
i++;
if(i==4)
{i=0;}
}
}
void IRQ1(void)
{asm("push r1 ,r5 to [sp]");
if(k1==0xffff)
{
k1=0x0000;
}
else
{
k1++;
}
*p_int_clear=0x1000;
asm("pop r1,r5 from [sp]");
asm("INT FIQ ");
return;
}
这个程序的功能是用凌阳单片机的A口低八位实现段选,B口低八位实现位段,控制一个四位十六进制计数器,从0000开始计时,一直到FFFF,然后循环,半秒钟加一次!我是用的定时器A进行计时,FIQ中断!可是结果从0000计到0001就不计了,不知道怎么回事!求高手修改