📄 main.c
字号:
#include "Common.h"
U8 gCPLD[8];
void WriteCPLD_byte(U8 index, U8 data)
{
PIO_CODR = 1<<23;
gCPLD[index] = data;
PIO_CODR = ~data;
PIO_SODR = data | 1<<23;
PIO_CODR = 1<<23;
}
void WriteCPLD_bit(U8 index, U8 bit, U8 stat)
{
}
void Sys_init(void)
{
AIC_IDCR = 0xFFFFFFFF; // disable all interrupts
PS_PCER = 0x10; // Enable Parallel IO Clock
// PIO_PER = 0x008007F0; // use P4-P10,P23 for I/O
PIO_PER = 0xFFFFFFFF; // use P4-P10,P23 for I/O
PIO_ODR =~0x008007F0; // use all others for input
PIO_OER = 0x008007F0; // use P4-P10,P23 for output
US0_init(115200);
}
U16 AD_getdata(U8 channel)
{
U8 msa,mse,data_h,data_l;
msa=channel%8;
if(channel<8)
mse=1;
else if(channel<16)
mse=2;
else
mse=4;
PIO_CODR = 1<<23;
PIO_CODR = 7<<4; PIO_SODR = mse<<4;
PIO_CODR = 7<<8; PIO_SODR = 2<<8;
PIO_SODR = 1<<23;
PIO_CODR = 1<<23;
PIO_CODR = 7<<4; PIO_SODR = msa<<4;
PIO_CODR = 7<<8; PIO_SODR = 1<<8;
PIO_SODR = 1<<23;
Delay_us(20);
PIO_CODR = 1<<23;
PIO_CODR = 2<<4; PIO_CODR = 7<<8;
PIO_SODR = 1<<23;
Delay_us(1);
PIO_CODR = 1<<23;
PIO_CODR = 3<<4; PIO_SODR = 2<<4;
PIO_CODR = 7<<8;
PIO_SODR = 1<<23;
Delay_us(1);
data_l = ((PIO_PDSR>>16)&0x1F) | ((PIO_PDSR>>24)&0xE0);
PIO_CODR = 1<<23;
PIO_SODR = 3<<4;
PIO_CODR = 7<<8;
PIO_SODR = 1<<23;
Delay_us(1);
data_h = ((PIO_PDSR>>16)&0x1F) | ((PIO_PDSR>>24)&0xE0);
return (data_h<<8)+data_l;
}
void HPLED1_control(U32 stat)
{
if(stat==0){
PIO_CODR = (1<<23);
PIO_CODR = (1<<8 | 1<<9 | 1<<10 | 1<<6);
PIO_SODR = (1<<23);
PIO_CODR = (1<<23);
}else{
PIO_CODR = (1<<23);
PIO_CODR = (1<<8 | 1<<9 | 1<<10);
PIO_SODR = (1<<6 | 1<<23);
PIO_CODR = (1<<23);
}
}
void Light(U32 stat)
{
if(stat==0){
PIO_CODR = (1<<23);
PIO_CODR = (1<<7 | 1<<8);
PIO_SODR = (1<<9 | 1<<10 | 1<<23);
PIO_CODR = (1<<23);
}else{
PIO_CODR = (1<<23);
PIO_CODR = (1<<8);
PIO_SODR = (1<<9 | 1<<10 | 1<<7 | 1<<23);
PIO_CODR = (1<<23);
}
}
//U8 AD_index[]={0,2,5,6,7};
U8 AD_index[]={5,0,7,6};
void Main(void)
{
int i,j;
int stat=0;
int ch='0';
U16 data;
U32 sum[4];
// U8 channel=16;
// int index=0,count=0;
Sys_init();
/*
while(1){
Light(0);
HPLED1_control(0);
Delay_us(4000000);
Light(1);
HPLED1_control(1);
Delay_us(4000000);
}
while(1){ // AD采集
data=AD_getdata(channel);
channel++;
if(channel>=24)
channel=16;
US0_THR = data%256; Delay_us(200);
US0_THR = data/256; Delay_us(200);
US0_THR = channel-16; Delay_us(600);
Delay_us(1000000);
}
*/
/*
// data=AD_getdata(0);
while(1){
data=AD_getdata(AD_index[index]);
// data=AD_getdata(0);
US0_THR = data%256; Delay_us(200);
US0_THR = data/256; Delay_us(200);
index++;
if(index==4){
index=0;
US0_THR = 0x00; Delay_us(200);
US0_THR = 0x80; Delay_us(200);
}
count++;
if(count==1200){
count=0;
Light(stat);
if(stat==0){
US0_THR = 0x01; Delay_us(200);
}else{
US0_THR = 0x02; Delay_us(200);
}
US0_THR = 0x80; Delay_us(200);
// HPLED1_control(stat);
stat=1-stat;
}
}
*/
while(1){
Delay_us(470000);
sum[0]=sum[1]=sum[2]=sum[3]=0;
for(i=0; i<10; i++){
for(j=0; j<4; j++){
data=AD_getdata(AD_index[j]);
sum[j]+=data;
Delay_us(500);
}
}
if(stat==0){
US0_THR = 0x01; Delay_us(200);
}else{
US0_THR = 0x02; Delay_us(200);
}
US0_THR = 0x80; Delay_us(200);
for(i=0; i<4; i++){
sum[i]/=10;
US0_THR = sum[i]%256; Delay_us(200);
US0_THR = sum[i]/256; Delay_us(200);
}
Light(stat);
stat=1-stat;
}
while(1){ // 自动发送数据
US0_THR = ch;
ch++;
if(ch>'9')
ch='0';
Delay_us(1000000);
HPLED1_control(stat);
stat=1-stat;
}
while(1){ // 自动回应数据
if(US0_CSR & 1){
US0_THR = US0_RHR+1;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -