⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 procedure_data_com.c

📁 工业流程算法的单片机实现
💻 C
字号:
#include <hidef.h>
#include <startup.h>
#include <Math.h>
#include <6812dg128a.h>
//#pragma CREATE_ASM_LISTING ON
volatile unsigned char PORTA;
volatile unsigned char DDRA;
volatile unsigned char PORTB;
volatile unsigned char DDRB;
volatile unsigned char PORTE;
volatile unsigned char DDRE=0x0ff;
volatile unsigned char PEAR;
volatile unsigned char MODE;
volatile unsigned char PUCR=0X30;
volatile unsigned char RDRIV;
volatile unsigned char INITRM;
volatile unsigned char INITRG;
volatile unsigned char INITEE;
volatile unsigned char MISC;
volatile unsigned char RTICTL;
volatile unsigned char RTIFLG;
volatile unsigned char COPCTL;
volatile unsigned char COPRST;
volatile unsigned char ITST0;
volatile unsigned char ITST1;
volatile unsigned char ITST2;
volatile unsigned char ITST3;
volatile unsigned char ITST4;
volatile unsigned char INTCR;
volatile unsigned char HPRIO;
volatile unsigned char BRKCT0;
volatile unsigned char BRKCT1;
volatile unsigned char BRKAH;
volatile unsigned char BRKAL;
volatile unsigned char BRKDH;
volatile unsigned char BRKDL;
volatile unsigned char PORTJ;
volatile unsigned char PORTH;
volatile unsigned char DDRJ;
volatile unsigned char DDRH;
volatile unsigned char KWIEJ;
volatile unsigned char KWIEH;
volatile unsigned char KWIFJ;
volatile unsigned char KWIFH;
volatile unsigned char KWPJ;
volatile unsigned char KWPH;
volatile unsigned char SYNR;
volatile unsigned char REFDV;
volatile unsigned char CGTFLG;
volatile unsigned char PLLFLG;
volatile unsigned char PLLCR;
volatile unsigned char CLKSEL;
volatile unsigned char SLOW;
volatile unsigned char CGTCTL;
volatile unsigned char PWCLK;
volatile unsigned char PWPOL;
volatile unsigned char PWEN;
volatile unsigned char PWPRES;
volatile unsigned char PWSCAL0;
volatile unsigned char PWSCNT0;
volatile unsigned char PWSCAL1;
volatile unsigned char PWSCNT1;
volatile unsigned char PWCNT0;
volatile unsigned char PWCNT1;
volatile unsigned char PWCNT2;
volatile unsigned char PWCNT3;
volatile unsigned char PWPER0;
volatile unsigned char PWPER1;
volatile unsigned char PWPER2;
volatile unsigned char PWPER3;
volatile unsigned char PWDTY0;
volatile unsigned char PWDTY1;
volatile unsigned char PWDTY2;
volatile unsigned char PWDTY3;
volatile unsigned char PWCTL;
volatile unsigned char PWTST;
volatile unsigned char PORTP;
volatile unsigned char DDRP=0X0FF;
volatile unsigned char ATD0CTL0;
volatile unsigned char ATD0CTL1;
volatile unsigned char ATD0CTL2;
volatile unsigned char ATD0CTL3;
volatile unsigned char ATD0CTL4;
volatile unsigned char ATD0CTL5;
volatile unsigned char ATD0STAT0;
volatile unsigned char ATD0STAT1;
volatile unsigned char ATD0TESTH;
volatile unsigned char ATD0TESTL;
volatile unsigned char PORTAD0;
volatile unsigned char ADR00H;
volatile unsigned char ADR00L;
volatile unsigned char ADR01H;
volatile unsigned char ADR01L;
volatile unsigned char ADR02H;
volatile unsigned char ADR02L;
volatile unsigned char ADR03H;
volatile unsigned char ADR03L;
volatile unsigned char ADR04H;
volatile unsigned char ADR04L;
volatile unsigned char ADR05H;
volatile unsigned char ADR05L;
volatile unsigned char ADR06H;
volatile unsigned char ADR06L;
volatile unsigned char ADR07H;
volatile unsigned char ADR07L;
volatile unsigned char TIOS;
volatile unsigned char CFORC;
volatile unsigned char OC7M;
volatile unsigned char OC7D;
volatile unsigned short TCNT;
volatile unsigned char TSCR;
volatile unsigned char TCTL1;
volatile unsigned char TCTL2;
volatile unsigned char TCTL3;
volatile unsigned char TCTL4;
volatile unsigned char TMSK1;
volatile unsigned char TMSK2;
volatile unsigned char TFLG1;
volatile unsigned char TFLG2;
volatile unsigned short TC0;
volatile unsigned short TC1;
volatile unsigned short TC2;
volatile unsigned short TC3;
volatile unsigned short TC4;
volatile unsigned short TC5;
volatile unsigned short TC6;
volatile unsigned short TC7;
volatile unsigned char PACTL;
volatile unsigned char PAFLG;
volatile unsigned char PACN3;
volatile unsigned char PACN2;
volatile unsigned char PACN1;
volatile unsigned char PACN0;
volatile unsigned char MCCTL;
volatile unsigned char MCFLG;
volatile unsigned char ICPAR;
volatile unsigned char DLYCT;
volatile unsigned char ICOVW;
volatile unsigned char ICSYS;
volatile unsigned char TIMTST;
volatile unsigned char PORTT;
volatile unsigned char DDRT;
volatile unsigned char PBCTL;
volatile unsigned char PBFLG;
volatile unsigned char PA3H;
volatile unsigned char PA2H;
volatile unsigned char PA1H;
volatile unsigned char PA0H;
volatile unsigned char MCCNTH;
volatile unsigned char MCCNTL;
volatile unsigned short TC0H;
volatile unsigned short TC1H;
volatile unsigned short TC2H;
volatile unsigned short TC3H;
volatile unsigned char SC0BDH;
volatile unsigned char SC0BDL;
volatile unsigned char SC0CR1;
volatile unsigned char SC0CR2;
volatile unsigned char SC0SR1;
volatile unsigned char SC0SR2;
volatile unsigned char SC0DRH;
volatile unsigned char SC0DRL;
volatile unsigned char SC1BDH;
volatile unsigned char SC1BDL;
volatile unsigned char SC1CR1;
volatile unsigned char SC1CR2;
volatile unsigned char SC1SR1;
volatile unsigned char SC1SR2;
volatile unsigned char SC1DRH;
volatile unsigned char SC1DRL;
volatile unsigned char SP0CR1;
volatile unsigned char SP0CR2;
volatile unsigned char SP0BR;
volatile unsigned char SP0SR;
volatile unsigned char SP0DR;
volatile unsigned char PORTS;
volatile unsigned char DDRS;
volatile unsigned char IBAD;
volatile unsigned char IBFD;
volatile unsigned char IBCR;
volatile unsigned char IBSR;
volatile unsigned char IBDR;
volatile unsigned char IBPURD;
volatile unsigned char PORTIB;
volatile unsigned char DDRIB;
volatile unsigned char EEDIVH;
volatile unsigned char EEDIVL;
volatile unsigned char EEMCR;
volatile unsigned char EEPROT;
volatile unsigned char EETST;
volatile unsigned char EEPROG;
volatile unsigned char FEELCK;
volatile unsigned char FEEMCR;
volatile unsigned char FEETST;
volatile unsigned char FEECTL;
volatile unsigned char MTST0;
volatile unsigned char MTST1;
volatile unsigned char MTST2;
volatile unsigned char MTST3;
volatile unsigned char PORTK;
volatile unsigned char DDRK;
volatile unsigned char PPAGE;
volatile unsigned char C0MCR0;
volatile unsigned char C0MCR1;
volatile unsigned char C0BTR0;
volatile unsigned char C0BTR1;
volatile unsigned char C0RFLG;
volatile unsigned char C0RIER;
volatile unsigned char C0TFLG;
volatile unsigned char C0TCR;
volatile unsigned char C0IDAC;
volatile unsigned char C0RXERR;
volatile unsigned char C0TXERR;
volatile unsigned char C0IDAR0;
volatile unsigned char C0IDAR1;
volatile unsigned char C0IDAR2;
volatile unsigned char C0IDAR3;
volatile unsigned char C0IDMR0;
volatile unsigned char C0IDMR1;
volatile unsigned char C0IDMR2;
volatile unsigned char C0IDMR3;
volatile unsigned char C0IDAR4;
volatile unsigned char C0IDAR5;
volatile unsigned char C0IDAR6;
volatile unsigned char C0IDAR7;
volatile unsigned char C0IDMR4;
volatile unsigned char C0IDMR5;
volatile unsigned char C0IDMR6;
volatile unsigned char C0IDMR7;
volatile unsigned char PCTLCAN0;
volatile unsigned char PORTCAN0;
volatile unsigned char DDRCAN0;
volatile unsigned char ATD1CTL0;
volatile unsigned char ATD1CTL1;
volatile unsigned char ATD1CTL2;
volatile unsigned char ATD1CTL3;
volatile unsigned char ATD1CTL4;
volatile unsigned char ATD1CTL5;
volatile unsigned char ATD1STAT0;
volatile unsigned char ATD1STAT1;
volatile unsigned char ATD1TESTH;
volatile unsigned char ATD1TESTL;
volatile unsigned char PORTAD1;
volatile unsigned char ADR10H;
volatile unsigned char ADR10L;
volatile unsigned char ADR11H;
volatile unsigned char ADR11L;
volatile unsigned char ADR12H;
volatile unsigned char ADR12L;
volatile unsigned char ADR13H;
volatile unsigned char ADR13L;
volatile unsigned char ADR14H;
volatile unsigned char ADR14L;
volatile unsigned char ADR15H;
volatile unsigned char ADR15L;
volatile unsigned char ADR16H;
volatile unsigned char ADR16L;
volatile unsigned char ADR17H;
volatile unsigned char ADR17L;
volatile unsigned char C1MCR0;
volatile unsigned char C1MCR1;
volatile unsigned char C1BTR0;
volatile unsigned char C1BTR1;
volatile unsigned char C1RFLG;
volatile unsigned char C1RIER;
volatile unsigned char C1TFLG;
volatile unsigned char C1TCR;
volatile unsigned char C1IDAC;
volatile unsigned char C1RXERR;
volatile unsigned char C1TXERR;
volatile unsigned char C1IDAR0;
volatile unsigned char C1IDAR1;
volatile unsigned char C1IDAR2;
volatile unsigned char C1IDAR3;
volatile unsigned char C1IDMR0;
volatile unsigned char C1IDMR1;
volatile unsigned char C1IDMR2;
volatile unsigned char C1IDMR3;
volatile unsigned char C1IDAR4;
volatile unsigned char C1IDAR5;
volatile unsigned char C1IDAR6;
volatile unsigned char C1IDAR7;
volatile unsigned char C1IDMR4;
volatile unsigned char C1IDMR5;
volatile unsigned char C1IDMR6;
volatile unsigned char C1IDMR7;
volatile unsigned char PCTLCAN1;
volatile unsigned char PORTCAN1;
volatile unsigned char DDRCAN1;
volatile unsigned short ROTIME0;
float xx;
unsigned int yy;
unsigned char eor;
unsigned char slave;
unsigned char block_num;
unsigned char *pointer_to_data;//指向接收数组的指针
unsigned char procedure_data[1152];//用于接收一个流程数据的数组
//应该考虑到在FLASH里写操作只能是64BYTE为一个操作单元,计算每个流程为1090BYTE,若以流程作为
//写入FLASH的一个单元,可将容量增大到1152BYTE,即18*64BYTE,写入时都转化成BYTE的形式,不包
//FLOAT和INT的数据类型,以便于进行写入操作
#pragma CODE_SEG  CodeForcedToPPage3 
#pragma TRAP_PROC
void procedure_com_interrupt(void)//不能在中断里对PORTS进行操作,必须保证在中断中的片选信号正确
{eor=144;//表示一次传输的字节的总数目
 slave=0x0ff;//设备的标示号
 asm{start3:brclr SC0SR1,#$20,start3
           ldaa SC0DRL
           suba slave
           bne  finish_of_com
     recei0:brclr SC0SR1,#$20,recei0
     		ldaa SC0DRL
     		suba block_num
     		bne finish_of_com
     		ldx  pointer_to_data
     recei1:brclr SC0SR1,#$20,recei1
            ldaa SC0DRL
            staa 0,x
            inx
            dec  eor
            bne recei1
            inc block_num
            ldd #$90
     		addd pointer_to_data
     		std pointer_to_data
            ldaa block_num
            suba #$08
            bne finish_of_com
            ldaa #$00
            staa block_num
            ldd #procedure_data
            std pointer_to_data
     finish_of_com:nop
    }
}
void com0_initial(void)
{EnableInterrupts;
 block_num=0;
 xx=12.5;
 yy=300;
 pointer_to_data=procedure_data;
 asm{ldaa #$0f0
     staa DDRS
     ldaa #$0f
     staa PORTS
     movb #$34,SC0BDL
     movb #$00,SC0CR1
     movb #$24,SC0CR2
     ldaa SC0SR1
     ldd SC0DRH 
     }
}
void main(void)
{ asm{LDAA #$90
     STAA MODE
     STAA MODE
     LDAA #$90
     STAA PEAR
     STAA PEAR
     LDAA #$8F
     STAA DDRK
     LDAA #$0FF
     STAA DDRE
     LDAA #$0FF
     STAA DDRP
     LDAA #$0FF
     STAA DDRS
     LDAA #$0FF
     STAA PORTP
     LDAA #$0FF
     STAA PORTS
     LDAA #$0FF
     STAA PORTK
     }
 com0_initial();
 loop: goto loop;
   }
 

 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -