#include<reg52.h>

#include<stdio.h>

#include<intrins.h>

#define uchar unsigned char

#define uint unsigned int

sbit dula=P2^6;

sbit wela=P2^7;

sbit adwr=P3^6;

sbit adrd=P3^7;

uchar flag,a;

uchar flag_uart,flag_time,flag_on,a,i,t0_num,ad_val;

float ad_vo;

uchar code table[]=

{

0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,

0x39,0x5e,0x79,0x71

};

void delayms(uint xms)

{

uint i,j;

for(i=xms;i>0;i--)

for(j=110;j>0;j--);

}

void init()

{

TMOD=0x21;

// SCON=0x50;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

TH1=0xfd;

TL1=0xfd;

TR1=1;

ET0=1;

SM0=0;

SM1=1;

REN=1;

EA=1;

ES=1;

}





void display(uchar value)

{

uchar bai,shi,ge;

bai=value/100;

shi=value%100/10;

ge=value%10;

dula=1;

P0=table[bai];

dula=0;

P0=0xff;

wela=1;

P0=0x7e;

wela=0;

delayms(5);

dula=1;

P0=table[shi];

dula=0;

P0=0xff;

wela=1;

P0=0x7d;

wela=0;

delayms(5);

dula=1;

P0=table[ge];

dula=0;

P0=0xff;

wela=1;

P0=0x7b;

wela=0;

delayms(5);

}





uchar get_ad()

{

uchar adval;

adwr=1;

_nop_();

adwr=0;

_nop_();

adwr=1;

_nop_();

adrd=1;

_nop_();

adrd=0;

_nop_();

adval=P1;

adrd=1;

return adval;

}





void main()

{

init();

wela=1;

P0=0x7f;

wela=0;

while(1)

{

if(flag_uart==1)

{

flag_uart=0;

ES=0;

TI=1;

switch(flag_on)

{

case 0:puts("Turn on ad!\n");

TR0=1;

break;

case 1:printf("Turn off ad!\n");

TR0=0;

break;

case 2:puts("Error!\n");

break;

}

while(!TI)

TI=0;

ES=1;

}

if(flag_time==1)

{

flag_time=0;

ad_val=get_ad();

ad_vo=(float)ad_val*5.0/256.0;

ES=0;

TI=1;

printf("The voltage is %fV\n",ad_vo);

while(!TI);

TI=0;

ES=1;

}

display(ad_val);

}

}





void timer0() interrupt 1

{

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

t0_num++;

if(t0_num==20)

{

t0_num=0;

flag_time=1;

}

}





void ser() interrupt 4

{

RI=0;       //接受中断标志位

a=SBUF;

flag_uart=1;

if(a==1)

flag_on=0;

else if(a==2)

flag_on=1;

else 

flag_on=2;

}

最新文章

  1. C++入门知识总结(1)
  2. 复利计算软件v3
  3. 更改Android Studio的主题背景
  4. charCodeAt 和 fromCharCode
  5. [转] 浅谈Microsoft MVP
  6. [O] SQLite数据库报错:no such column
  7. 通过并行 提高批量审核PDF性能
  8. mybatis + log4j 打印mybatis的sql
  9. java它们的定义ArrayList序列, 大神跳跃
  10. ASP.Net获取Aras连接,并获取Innovator实例
  11. Angular基础(三) TypeScript
  12. udev和devfs的区别
  13. ASP.NET Web API 中使用 swagger 来管理 API 文档
  14. 转 php安装错误configure: error: Please reinstall the libcurl distribu
  15. [转]bootstrapTable refresh 方法使用简单举例
  16. 我应该直接学 Swift,还是 Objective-C?
  17. bzoj2564集合的面积
  18. Java并发(二十二):定时任务ScheduledThreadPoolExecutor
  19. Monkey源代码分析番外篇之Android注入事件的三种方法比較
  20. ffmreg thinkphp 控制器 获取音频视频详细信息(获取时长)

热门文章

  1. [BZOJ 2100] Apple Delivery
  2. [SCOI 2010] 股票交易
  3. Node.js:常用工具
  4. java javax.annotation.Resource注解的详解
  5. getElementById和querySelector区别
  6. Super超级ERP系统---(6)采购管理--入库上架
  7. 用LyX写中文幻灯片
  8. 更换WordPress编辑器为TinyMCE Advanced
  9. 错误:Camera录制视频(6.0错误),5.1正常,7.1正常 (java.lang.RuntimeException: start failed.at android.media.MediaRecorder.native_start(Native Method))
  10. vue-阻止事件冒泡-开启右键-键盘类事件