📄 example1.c
字号:
/*
*********************************************************************************************************
* EXAMPLE1
* Using the Keil uVision2 compiler
* File : EXAMPLE1.C
*********************************************************************************************************
*/
#include "uPLC.h"
#include "EXAMPLE1.h"
#include "REG52.h" //应与所用的CPU相配
#include "Program.h"
//////////////////////////////////////////////////////////////////////////////////
#define OSC_FREQ (12000000UL)
#define OSC_PER_INST (12)
//Preload value for 20 ms delay
#define PERIOD (20) //100 msec
#define PRELOAD020 (65536 - (unsigned int)(OSC_FREQ * PERIOD / (OSC_PER_INST * 1000)))
#define PRELOAD020H (PRELOAD020 / 256)
#define PRELOAD020L (PRELOAD020 % 256)
#define INTR_TIMER_0 1
unsigned int xdata counter;
///////////////////////////////////////////////////////////////////////////////
void Timer0ISR(void) interrupt INTR_TIMER_0
{
//Reload timer0 value
TL0 = PRELOAD020L;
TH0 = PRELOAD020H;
if(counter%5==0) ReflashTIM();
counter++;
}
///////////////////////////////////////////////////////////////////////////////
void main (void)
{
#if CODE_DEBUGGING
SCON = 0x50; /* SCON: mode 1, 8-bit UART, enable rcvr */
TMOD |= 0x20; /* TMOD: timer 1, mode 2, 8-bit reload */
TH1 = 221; /* TH1: reload value for 1200 baud @ 16MHz */
TR1 = 1; /* TR1: timer 1 run */
TI = 1; /* TI: set TI to send first char of UART */
#endif
Init();
#if CODE_DEBUGGING
CheckLadder(Program);
#endif
while (1)
{
ExecuteLadder(Program);
MappingIO();
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////
void Init(void)
{
P0=P1=P2=P3=0xff;
TMOD &= 0xf0; // clear all T0 bits
TMOD |= 0x01; // set T0 as 16-bit timer
//Set timer0 value as (65536 - 20 * 1000) equivalent to 20 ms
TL0 = PRELOAD020L;
TH0 = PRELOAD020H;
ET0 = 1; // enable timer 0 interrupt
TR0 = 1; // start timer 0
EA = 1; // enable interrupt
// AUXR=0; //选择片内XRAM
uPLCInit();
counter=0;
}
////////////////////////////////////////////////////////////////////////////////
void MappingIO(void)
{
unsigned char In;
unsigned int xdata mt;
int *pIR;
pIR=GetIR();
mt=0;
In=~P3;
mt|=In;
*pIR=mt;
mt=*(pIR+9);
P1=~mt;
}
//////////////////////////////////////////////////////////////////////////////////
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -