adc0809数字电压表,用汇编语言,求代码

adc0809数字电压表,用汇编语言,求代码,第1张

汇编代码:

程序代码

LED_0 EQU 30H

LED_1 EQU 31H

LED_2 EQU 32H       

ADC EQU 35H     

CLOCK BIT P24 

ST BIT P25

EOC BIT P26

OE BIT P27

 ORG 00H   

 SJMP START   

 ORG 0BH                               

 LJMP INT_T0   

START: MOV LED_0, #00H

     MOV P2, #0FFH

     MOV LED_1, #00H

     MOV LED_2, #00H

     MOV DPTR, #TABLE   

     MOV TMOD, #02H   

     MOV TH0, #245H   

     MOV TL0, #00H

     MOV IE, #82H

     SETB TR0     

WAIT: CLR ST

    SETB STH

    CLR ST       

    JNB EOC, $   

    SETB OE     

    MOV ADC, P1   

    CLR OE     

    MOV A, ADC   

    MOV B, #51

    DIV AB     

    MOV LED_2, A     

    MOV A, B

    MOV B, #5

    DIV AB     

    MOV LED_1, A

    MOV LED_0, B 

    LCALL DISP   

    SJMP WAIT

INT_T0: CPL, CLOCK   

    RETI

DISP: MOV A, LED_0     

    MOVC A, @A+DPTR

    CLR P23

    MOV P0, A

    LCALL DELAY     

    SETB P23       

    MOV A, LED_1     

    MOVC A,@A+DPTR   

    CLR P22

    MOV P0, A     

    LCALL DELAY

    SETB P22

    MOV A, LED_2

    MOVC A, @A+DPTRL

    CLR P21

    ORL A, #80H       

    MOV P0, A

    LCALL DELAY

    SETB P21

    RET

DELAY: MOV R6, #10     

D1:    MOV R7, #250     

    DJNZ R7, $       

    DJNZ R6, D1

    RET

TABLE: DB 3FH, 06H, 5BH, 4FH, 66H   

     DB 6DH, 7DH, 07H, 7FH, 6FH

    END

你这个程序有些不规范,比如SIGNAL current_state,next_state:states :=st0;

这里是小写,而你在后面又用大写,建议前后大小写保持一致;还有就是有些是在输入的时候把一些字母输错了,自己以后写程序要注意;一定还要注意一些标点符号,比如“)”,“;”之类的。还有END IF,END与IF之间一定要有一个空格。我把改好之后的程序写在下面,你自己对照看一下。

修改后的程序:

LIBRARY IEEE;

USE IEEESTD_LOGIC_1164ALL;

ENTITY ADCINT IS

PORT(D :IN STD_LOGIC_VECTOR(7 DOWNTO 0);

CLK : IN STD_LOGIC;

EOC : IN STD_LOGIC;

ALE : OUT STD_LOGIC;

START : OUT STD_LOGIC;

OE : OUT STD_LOGIC;

ADDA : OUT STD_LOGIC;

LOCK0 : OUT STD_LOGIC;

Q : OUT STD_LOGIC_VECTOR(7 DOWNTO 0));

END ADCINT;

ARCHITECTURE BEHAV OF ADCINT IS

TYPE STATES IS (ST0,ST1,ST2,ST3,ST4);

SIGNAL CURRENT_STATE,NEXT_STATE:STATES :=ST0;

SIGNAL REGL :STD_LOGIC_VECTOR(7 DOWNTO 0);

SIGNAL LOCK :STD_LOGIC;

BEGIN

ADDA<='1';

Q<=REGL;

LOCK0<=LOCK;

COM: PROCESS(CURRENT_STATE,EOC)

BEGIN

CASE CURRENT_STATE IS

WHEN ST0=>ALE<='0';START<='0';LOCK<='0';OE<='0'; NEXT_STATE <=ST1;

WHEN ST1=>ALE<='1';START<='1';LOCK<='0';OE<='0'; NEXT_STATE <=ST2;

WHEN ST2=>ALE<='0';START<='0';LOCK<='0';OE<='0';

IF (EOC='1') THEN NEXT_STATE<=ST3;

ELSE NEXT_STATE<=ST2;

END IF;

WHEN ST3=>ALE<='0';START<='0';LOCK<='0';OE<='1';NEXT_STATE<=ST4;

WHEN ST4=>ALE<='0';START<='0';LOCK<='0';OE<='1';NEXT_STATE<=ST0;

WHEN OTHERS=>NEXT_STATE<=ST0;

END CASE;

END PROCESS COM;

REG: PROCESS (CLK)

BEGIN

IF (CLK'EVENT AND CLK='1') THEN CURRENT_STATE<=NEXT_STATE;

END IF;

END PROCESS REG;

LATCH1:PROCESS (LOCK)

BEGIN

IF LOCK'EVENT AND LOCK='1' THEN REGL<=D;

END IF;

END PROCESS LATCH1;

END BEHAV;

ADC0809的数据你都已经采集到了,并且也把个十百的数字都计算出来了,那就只剩下显示了,LCD1602的初始化都已经完成了,只剩下最后一步那就是显示了,你会初始化,就会显示啊!

查看LCD的数据手册,有在液晶屏对应的地址上显示字符和数字的指令,你按数据手册上的时序在你想显示的地址上把你读到的个十百位数据显示到相应位置上不就可以了啊,这还有什么问题呢!

#include<reg52h> //包含单片机寄存器的头文件

#include<intrinsh> //包含_nop_()函数定义的头文件

//AD端口定义

sbit CLK=P3^4;

sbit start=P3^0;

sbit oe=P3^1;

sbit eoc=P3^2;

#define uchar unsigned char

#define uint unsigned int

/初始化/

void sysinit()

{

TMOD = 0x20; //设定定时器T1工作方式 T0 工作方式1

TH1=0xfe; //利用T1中断产生CLK信号

TL1=0xfe;//

EA = 1; //开总中断

ET1=1;

TR1=1; //启动定时器T1

start=0; // START: A/D转换启动信号,输入,高电平有效。

oe=0; //数据输出允许信号,输入,高电平有效。当A/D转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。

}

void t1(void) interrupt 3

{

ET1=0;

CLK=~CLK;

ET1=1;

}

//adc0800数据采集

unsigned char adc()

{

unsigned char Temp;

start=1;

start=0; //启动信号

while (!eoc);// A/D转换结束信号

P1=0xff;

oe=1;

Temp=P1;//读取采集数据

oe=0;

return(Temp);//返回采集数据

}

void main()

{

uchar a;

sysinit();

while(1)

{

a=adc();//AD转换,转换后将数据存入变量a中

}

}

以上就是关于adc0809数字电压表,用汇编语言,求代码全部的内容,包括:adc0809数字电压表,用汇编语言,求代码、vhdl 原程序如下、FPGA高手请进~~等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/10129106.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存