- 打卡等级:初来乍到
- 打卡总天数:5
- 最近打卡:2024-11-03 23:32:15
注册会员
- 积分
- 61
|
发表于 2024-10-28 17:20:59
|
显示全部楼层
本帖最后由 retsen 于 2024-10-28 17:33 编辑
#include "stc8h.h"
#include "intrins.h"
#define MAIN_Fosc 12000000L //define main Clock 12M
typedef unsigned char u8;
typedef unsigned int u16;
typedef unsigned long u32;
void GPIO_Init(void); //
void Delayus(int t0);
void Delayms(int t1);
void Power_off(void);
void Power_on(void);
sbit Touch_reset = P0^3; //OUTPUT
sbit DISP = P1^4; //OUTPUT
sbit DD_reset = P1^6; //OUTPUT
sbit Scan_on_off = P2^4; //INPUT Scan Power Switch
sbit Main_board_power_on = P2^7; //OUTPUT 控制主板开机
sbit PON = P3^5; //LCD ON
//===========================================//
//===========================================//
void GPIO_Init(void)
{
// P_SW2 |= 0x80;
P0M1 = 0x00;
P0M0 = 0x00;
P1M1 = 0x00;
P1M0 = 0x00;
P2M1 = 0x00;
P2M0 = 0x00;
P3M1 = 0x00;
P3M0 = 0x00;
}
void Delayus(int t0) // /* X1us */
{
int i,j;
for(i=0;i<t0;i++)
for(j=0;j<12;j++); //1T=0.083us ,1us=12*1T
}
//===========================================//
void Delayms(int t1)
{
unsigned int i;
do
{
i=MAIN_Fosc/12000; //1T=0.083us ,1ms=12000*1T
while(--i);
}
while(--t1);
}
//===========================================//
void Power_on()
{
if(Scan_on_off==1) //
{
DD_reset=0; // P16=0
Touch_reset=0; //P03=0
DISP=0; //P36=0
PON=0;
Delayms(100);
DD_reset=1; //P16=1
Delayms(50);
Touch_reset=1; //P03=1
DISP = 1;
Delayms(150);
PON =1; //P36=1
}
else{}
}
//===========================================//
void Power_off()
{
if(Scan_on_off==0) //ADC3=0,POWER OFF
{
Main_board_power_on=0; //主板电源控制端接地,执行关机程序
PON =0; //P36=0
Delayms(150);
DD_reset=0; // P16=0
Touch_reset=0; //P03=0
DISP =0;
}
else
{
}
}
//============================================//
void main(void)
{
GPIO_Init();
if (Scan_on_off==0) //POWER off
{
Power_off();
}
else
{
Power_on();
}
}
//====================之前是随便敲的,上面这个编译是OK的,但烧录后,无波形输出,我的P30~P32 是悬空的,是否一定要上拉才行?RESET也没有加RC,我烧录其他PWM例程,是可以输出波形的。 |
|