📄 text1.c
字号:
#include<reg51.h>
#include<intrins.h>
sfr P1M0 = 0x91;
sfr P1M1 = 0x92;
sfr ADC_CONTR = 0xc5;
sfr ADC_DATA = 0xc6;
sbit P1_5 = P1^5;
unsigned char i = 1;
unsigned char flag = 0;
unsigned char liangdu; //转换结果
main()
{
P1_5 = 0;
TMOD = 0x21; //T1为波特率发生器,T0工作方式1
SCON = 0x50;
TH0 = (65535-9216)/256;
TL0 = (65535-9216)%256;
TL1 = 0xfd; //波特率为9600
TH1 = 0xfd;
ES = 0;
ET0 = 1;
TR1 = 1;
TR0 = 1;
EA = 1;
P1M0 |= 0x80; //设置P1.7为开漏,作为AD使用
P1M1 |= 0x80;
ADC_DATA = 0;
ADC_CONTR = 0x87;
_nop_();
_nop_();
while(1);
}
void time0(void) interrupt 1 using 2
{
if(i>=100)
{
i = 0;
ADC_CONTR &= 0xef; //清标志位
ADC_CONTR |= 0x08; //启动ADC;
while(1)
{
if((ADC_CONTR&0x10)!=0)
{
liangdu = ADC_DATA;
SBUF = liangdu; //串口发送
while(!TI);
TI = 0;
if(flag==0)
{
if(liangdu<=100)
{
P1_5 = 1; //开灯
flag = 1;
}
}
else if(flag==1)
{
if(liangdu>=144)
{
P1_5 = 0; //关灯
flag = 0;
}
}
break;
}
}
}
i++;
TH0 = (65535-9216)/256;
TL0 = (65535-9216)%256;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -