📄 led.c.bak
字号:
#include "typedef.h"
#include "f2407regs_c.h"
#include "global.h"
extern uint cfgdata[128];
extern uchar counterTime;
extern uchar ledVlu;
extern uchar b_com_success;
extern uchar b_com_counter;
extern uchar bFlashError;
extern uchar flashErrorCounter;
extern uchar bReadTag;
extern uchar readTagCounter;
extern uchar bReadyReadTag;
extern uchar readyReadCounter;
extern uchar bPowerUp;
extern uchar PowerUpCounter;
extern uchar bAlarm ;
extern uchar alarmCounter;
void ledOptInit();
void LedOptOut(void);
void LedOutput12();
void LedOutput1(void);
void LedOutput2(uchar data);
void LedOutput3(uchar data);
void LedOutput4(uchar data);
void LedOutput5(uchar data);
void LedOutput5flash(void);
uchar OpticInput3();
void OptOutput1(uchar data);
void OptOutput2(uchar data);
void OptOutput3(uchar data);
void ledOptInit() // 273 clk,clr as io output
{
MCRB &= 0xfeff;
PDDATDIR |= 0x0101; //iopd0 as io,273_clk
MCRB &= 0xFFBF;
PBDATDIR |= 0x4040; //iopc6 as io,273_clr
}
/*
五路发光二极管输出控制
led1: d7;
led2: d6
led3: d5
led4: d4
led5: d3
'1': 亮
'0': 灭
*/
void LedOutput1() //d0
{
ledVlu = ledVlu ^ 0x01; /* led1 = !led1 */
LedOptOut();
}
void LedOutput12()
{
ledVlu = ledVlu ^ 0x03; /* led2 = !led2,led1 = !led1 */
LedOptOut();
}
void LedOutput2(uchar data) //d1
{
if(data)
{
ledVlu = ledVlu | 0x02; /* led2 = 1 */
LedOptOut();
}
else
{
ledVlu = ledVlu & 0xfd; /* led2 = 0 */
LedOptOut();
}
}
void LedOutput3(uchar data) //d2
{
if(data)
{
ledVlu = ledVlu | 0x04; /* led3 = 1 */
LedOptOut();
}
else
{
ledVlu = ledVlu & 0xfb; /* led3 = 0 */
LedOptOut();
}
}
void LedOutput4(uchar data) //d3
{
if(data)
{
ledVlu = ledVlu | 0x08; /* led4 = 1 */
LedOptOut();
}
else
{
ledVlu = ledVlu & 0xf7; /* led4 = 0 */
LedOptOut();
}
}
void LedOutput5(uchar data) //d5
{
if(data)
{
ledVlu = ledVlu | 0x10; /* led5 = 1 */
LedOptOut();
}
else
{
ledVlu = ledVlu & 0xef; /* led5 = 0 */
LedOptOut();
}
}
void LedOutput5flash()
{
ledVlu = ledVlu ^ 0x10; /* led5 = !led5 */
LedOptOut();
}
////////////////////////////////////////////////////////////
/*
三路光耦输入口,返回值低三位表示三路状态,高五位不用,
低三位:‘0’,低, ‘1’,高
*/
uchar OpticInput3()
{
uchar state = 0;
MCRA &= 0xcfff;
PBDATDIR &= 0xcfcf; // iopb4,iopb5 as io;optin_1,optin_2
MCRB &= 0xfff7;
PCDATDIR &= 0xf7f7; //iopc3 as io;optin_3
if(PBDATDIR&0x10)state |= 0x01; // the first '1'
if(PBDATDIR&0x20)state |= 0x02; // the second '1'
if(PCDATDIR&0x80)state |= 0x04; // the third '1'
return (state);
}
/*
光耦输出口opt1,通过数据口d7锁存
*/
void OptOutput1(uchar data)
{
if(data)
{
ledVlu = ledVlu | 0x80; /* opt1 = 1 */
LedOptOut();
}
else
{
ledVlu = ledVlu & 0x7f; /* opt1 = 0 */
LedOptOut();
}
}
/*
光耦输出口opt2,通过数据口d6锁存
*/
void OptOutput2(uchar data)
{
if(data)
{
ledVlu = ledVlu | 0x40; /* opt2 = 1 */
LedOptOut();
}
else
{
ledVlu = ledVlu & 0xbf; /* opt2 = 0 */
LedOptOut();
}
}
/*
光耦输出口opt3,通过数据口d5锁存
*/
void OptOutput3(uchar data)
{
if(data)
{
ledVlu = ledVlu | 0x20; /* opt3 = 1 */
LedOptOut();
}
else
{
ledVlu = ledVlu & 0xdf; /* opt3 = 0 */
LedOptOut();
}
}
/*
led1 is for running,frequency is 1Hz
*/
void ledDrive(void)
{
feedWatchDog();
if(counterTime>=10) //程序运行灯,f=1Hz
{
counterTime = 0;
LedOutput1();
}
if(bFlashError) // flash 错误指示灯,500ms
{
if(flashErrorCounter>=5) //500ms
{
flashErrorCounter = 0;
LedOutput12(); // led2 = 0 ,led1 = 0
}
}
if(bReadyReadTag == 1)
{
LedOutput2(1); // led2 = 1
if(readyReadCounter>=2) //亮200ms
{
bReadyReadTag = 0;
readyReadCounter = 0;
LedOutput2(0); // led2 = 0
}
}
if(b_com_success) //串口通讯灯计数器
{
LedOutput3(1); // led3 = 1
if(b_com_counter>=2) //亮200ms
{
b_com_success = 0;
b_com_counter = 0;
LedOutput3(0); // led3 = 0
}
}
if(bReadTag == 0x01) //read tag
{
LedOutput4(1);
if(readTagCounter>=2) //200ms
{
bReadTag = 0;
readTagCounter = 0;
LedOutput4(0);
}
}
if(bPowerUp == 0x01) //read tag
{
LedOutput5(1);
if(PowerUpCounter>=10) //1s
{
bPowerUp = 0;
PowerUpCounter = 0;
LedOutput5(0);
}
}
if(bAlarm == 0x01) //各种告警指示灯
{
if(alarmCounter>=2) //200ms
{
alarmCounter = 0;
LedOutput5flash();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -