找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6100|回复: 1
收起左侧

ADC0808显示电压电路图 C语言+汇编程序

[复制链接]
ID:113276 发表于 2016-4-10 17:52 | 显示全部楼层 |阅读模式
提供汇编和c语言2个版本的程序 电路图在最下面

ORG 0000h
  LJMP MAIN
  ;====================;
  ORG 0003h
  SETB P3.0    ;OE=1
  MOV R3,P2    ;READ ADC
  CLR P3.0     ;END
  RETI
  ;=====================;
  ORG 000Bh
  CPL P3.4     ;CREAT CLK
  RETI
  ;===================;
  ORG 001Bh
  CLR TR1      ;close T1
  CLR P3.1     ;ALE=0
  CLR P3.3     ;start=0
  nop
  nop
  SETB P3.1    ;ALE=1
  SETB P3.3    ;start=1
  nop
  nop
  CLR P3.1     ;ALE=0
  CLR P3.3     ;start=0
  MOV TH1,#3DH
  MOV TL1,#0B0H
  SETB TR1     ;open T1
  RETI
  ;==================;
  ORG 0040H  
MAIN: CLR P3.0
        CLR P3.1
  CLR P3.3
  
  SETB EA
  SETB EX0
  SETB IT0
  SETB PX0
  
  SETB ET0
  
  SETB ET1
  SETB PT1
  MOV TMOD,#12H
  MOV TH0,#0FDH
  MOV TL0,#0FDH
  MOV TH1,#3DH
  MOV TL1,#0B0H
  SETB TR0
  SETB TR1
LOOP:   MOV P1,R3
        SJMP LOOP
       end

#include"reg52.h"
#include"intrins.h"
unsigned int tt,dd;
sbit clock=P3^0;
sbit start=P3^1;
sbit    OE=P3^3;
sbit   ALE=P3^4;
sbit  addA=P3^5;
sbit  rs=P3^6;
sbit   e=P3^7;

void delay(unsigned char us)
{
   while(us--);
}
void w1602(bit w,unsigned char dat)
{
  rs=w;
  e=0;
  P1=dat;
  delay(4);
  e=1;
  delay(8);
  e=0;
}
void init1602()
{
  w1602(0,0x38);
w1602(0,0x06);
w1602(0,0x0c);
w1602(0,0x01);
}
void main()
{
init1602();
start=0;
OE=0;
ALE=0;
  EA=1;

EX0=1;
IT0=1;
PX0=1;
ET0=1;
ET1=1;
PT1=1;
TMOD=0x12;
TH0=0xf0;
TL0=0xf0;
TH1=0x4d;
TL1=0xb0;
TR0=1;
TR1=1;

while(1)
{
dd=tt*196/100;
w1602(0,0x80);
w1602(1,0x30+dd/100);
w1602(1,0x2e);
w1602(1,0x30+(dd%100)/10);
w1602(1,0x30+(dd%100)%10);
  }
}
void ddd() interrupt 0
{
OE=1;    //EOC  _______________|---|___
  tt=P0;   //OE   _______________|---|___read dat to tt
OE=0;
}
void clockt() interrupt 1
{
  clock=~clock;   //creat clk pulse for ADC0808
}

void wdata() interrupt 3
{
TR1=0;      //close C/T1
ALE=0;
  start=0;
_nop_();

ALE=1;
start=1;
_nop_();

start=0;    // ALE       ___|---|___________________
ALE=0;      //start      ___|---|___________________
_nop_();    //finsh EOC  _____________________|---|___

TH1=0x4d;
TL1=0xb0;
TR1=1;    //reset C/T1 for Next ADC
}






回复

使用道具 举报

ID:397940 发表于 2018-9-22 16:00 | 显示全部楼层
老哥,你确定这个程序是对的吗?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表