历史上的今天
返回首页

历史上的今天

今天是:2025年02月01日(星期六)

2018年02月01日 | STC12C5A60S2汇编(ADC查询方式)示例程序

2018-02-01 来源:eefocus

STC12C5A60S2汇编(ADC查询方式)示例程序

;/*Declare SFR associated with the ADC */
ADC_CONTR   EQU 0BCH            ;ADC control register

ADC_RES     EQU 0BDH            ;ADC high 8-bit result register
ADC_LOW2    EQU 0BEH            ;ADC low 2-bit result register
P1ASF       EQU 09DH            ;P1 secondary function control register


;/*Define ADC operation const for ADC_CONTR*/
ADC_POWER   EQU 80H             ;ADC power control bit
ADC_FLAG    EQU 10H             ;ADC complete flag
ADC_START   EQU 08H             ;ADC start control bit
ADC_SPEEDLL EQU 00H             ;420 cLOCks
ADC_SPEEDL  EQU 20H             ;280 clocks
ADC_SPEEDH  EQU 40H             ;140 clocks
ADC_SPEEDHH EQU 60H             ;70 clocks

;-----------------------------------------
    ORG   0000H
    LJMP  MAIN
;-----------------------------------------
    ORG   0100H
MAIN:
    LCALL INIT_UART             ;Init UART, use to show ADC result
    LCALL INIT_ADC              ;Init ADC sfr
;-------------------------------
NEXT:
    MOV    A,#0
    LCALL SHOW_RESULT           ;Show channel0 result
    MOV    A,#1
    LCALL SHOW_RESULT           ;Show channel1 result
    MOV    A,#2
    LCALL SHOW_RESULT           ;Show channel2 result
    MOV    A,#3
    LCALL SHOW_RESULT           ;Show channel3 result
    MOV    A,#4
    LCALL SHOW_RESULT           ;Show channel4 result
    MOV    A,#5
    LCALL SHOW_RESULT           ;Show channel5 result
    MOV    A,#6
    LCALL SHOW_RESULT           ;Show channel6 result
    MOV    A,#7
    LCALL SHOW_RESULT           ;Show channel7 result

    SJMP  NEXT

;/*----------------------------
;Send ADC result to UART
;Input: ACC (ADC channel NO.)
;Output:-
;----------------------------*/
SHOW_RESULT:
    LCALL SEND_DATA             ;Show Channel NO.
    LCALL GET_ADC_RESULT        ;Get high 8-bit ADC result
    LCALL SEND_DATA             ;Show result

;//if you want show 10-bit result, uncomment next 2 lines
;    MOV    A,ADC_LOW2            ;Get low 2-bit ADC result
;    LCALL SEND_DATA             ;Show result
    RET


;/*----------------------------
;Read ADC conversion result
;Input: ACC (ADC channel NO.)
;Output:ACC (ADC result)
;----------------------------*/
GET_ADC_RESULT:
    ORL   A,#ADC_POWER | ADC_SPEEDLL | ADC_START
    MOV    ADC_CONTR,A           ;Start A/D conversion
    NOP                         ;Must wait before inquiry
    NOP
    NOP
    NOP
WAIT:
    MOV    A,ADC_CONTR           ;Wait complete flag
    JNB   ACC.4,WAIT            ;ADC_FLAG(ADC_CONTR.4)
    ANL   ADC_CONTR,#NOT ADC_FLAG ;Clear ADC_FLAG
    MOV    A,ADC_RES             ;Return ADC result
    RET

;/*----------------------------
;Initial ADC sfr
;----------------------------*/
INIT_ADC:
    MOV    P1ASF,#0FFH           ;Open 8 channels ADC function
    MOV    ADC_RES,#0            ;Clear previous result
    MOV    ADC_CONTR,#ADC_POWER | ADC_SPEEDLL
    MOV    A,#2                  ;ADC power-on and delay
    LCALL DELAY
    RET

;/*----------------------------
;Initial UART
;----------------------------*/
INIT_UART:
    MOV    SCON,#5AH             ;8 bit data ,no parity bit
    MOV    TMOD,#20H             ;T1 as 8-bit auto reload
    MOV    A,#-5                 ;Set Uart baudrate -(18432000/12/32/9600)
    MOV    TH1,A                 ;Set T1 reload value
    MOV    TL1,A
    SETB  TR1                   ;T1 start running
    RET

;/*----------------------------
;Send one byte data to PC
;Input: ACC (UART data)
;Output:-
;----------------------------*/
SEND_DATA:
    JNB   TI,$                  ;Wait for the previous data is sent
    CLR   TI                    ;Clear TI flag
    MOV    SBUF,A                ;Send current data
    RET

;/*----------------------------
;SOFtware delay function
;----------------------------*/
DELAY:
    MOV    R2,A
    CLR   A
    MOV    R0,A
    MOV    R1,A
DELAY1:
    DJNZ  R0,DELAY1
    DJNZ  R1,DELAY1
    DJNZ  R2,DELAY1
    RET

    END


推荐阅读

史海拾趣

FCI / Amphenol公司的发展小趣事

FCI公司起源于1988年,当时由Framatome组建,其初衷是作为核能领域外的一个多样化经营项目。然而,随着市场的变化和公司的战略调整,FCI逐渐将重心转向连接器制造。经过20多次的精心收购和策略性扩张,FCI在短短20年内便成长为全球最大的连接器制造公司之一。这一转变不仅展现了FCI对市场敏锐的洞察力,也体现了其卓越的管理能力和执行力。

Antenna Factor公司的发展小趣事

随着公司实力的不断增强,Antenna Factor公司开始将目光投向国际市场。他们积极参加国际电子展会和技术交流活动,与全球各地的客户和合作伙伴建立了广泛的联系。同时,公司还加大了对海外市场的研发投入和市场推广力度,逐步实现了产品的全球化销售。这一战略不仅为公司带来了更广阔的发展空间,也提升了其在全球电子行业中的竞争力。

通过以上五个故事,我们可以看到Antenna Factor公司在电子行业中的发展历程和取得的成就。他们以技术创新为驱动,不断突破自我,积极拓展市场,加强质量管理和品牌建设,逐步实现了公司的快速发展和壮大。未来,随着无线通信技术的不断进步和应用领域的不断拓展,相信Antenna Factor公司将继续保持领先地位,为电子行业的发展做出更大的贡献。

福斯特半导体(Foster)公司的发展小趣事

Antenna Factor公司始终注重产品质量和客户体验。他们建立了严格的质量管理体系,从原材料采购到产品生产的每一个环节都进行严格的把控。同时,公司还加强了对售后服务的管理和改进,确保客户在使用过程中能够得到及时、有效的支持。这些举措使得Antenna Factor公司的产品质量和品牌形象得到了显著提升。

中科芯(CKS)公司的发展小趣事

作为电子行业的领军企业,中科芯承担着众多国家重点科研任务。多年来,公司积极参与国家重大科研项目,涉及通信、计算机、航空航天等多个领域。通过不断的技术攻关和创新,中科芯成功完成了500多项国家重点科研任务,获得了国家奖18项、省部级奖近200项。这些成果的取得不仅提升了公司的技术实力,也为中国电子行业的发展做出了巨大贡献。

Bias Power公司的发展小趣事

Bias Power公司深知研发实力是企业发展的核心。因此,公司投入大量资源用于研发工作,建立了完善的研发团队和实验设施。通过不断的技术创新和研发投入,Bias Power公司成功推出了一系列具有竞争力的新产品,巩固了其在电子行业的领先地位。

同时,公司还注重知识产权的保护,积极申请专利,保护其核心技术不被侵犯。这些专利的申请和授权不仅提升了公司的技术实力,还为公司的发展提供了有力保障。

启珑(CHIPLON)公司的发展小趣事

在竞争激烈的电子行业中,Bias Power公司始终坚持质量至上的原则。公司建立了严格的质量控制体系,从原材料采购到生产加工、产品测试等各个环节都进行严格把关。此外,公司还引入了先进的生产设备和技术,确保产品的稳定性和可靠性。

由于公司对产品质量的严格把控,Bias Power公司的产品在市场上享有很高的声誉。许多知名企业都选择与其合作,将其产品应用于关键领域和重要项目中。这种信赖和认可为Bias Power公司的发展提供了有力支持。

问答坊 | AI 解惑

基于AT89C52单片机的SD卡的读写设计

长期以来,以Flash Memory为存储体的SD卡因具备体积小、功耗低、可擦写以及非易失性等特点而被广泛应用于消费类电子产品中。特别是近年来,随着价格不断下降且存储容量不断提高,它的应用范围日益增广。当数据采集系统需要长时间地采集、记录海量数 ...…

查看全部问答>

想请问:我的汇编文件编译连接后,为什么没有写到我指定的地址

如果程序中即有C代码,又有汇编代码,那汇编代码编译连接后,会被放到物理地址的什么地址,这个由哪里的设置决定 在keil的options里设置的片内FLASH 我的片内FLASH起始地址为:0xC00000 编译后C代码都写到这里了,可是汇编的代码却写到0x000A6A ...…

查看全部问答>

ucos中的OSUnMapTbl原理在硬件中的应用?

ucos中的OSUnMapTbl是一个很大的静态数组,提高查找速度 以前看过一个网页说 这中设计思想在硬件设计中也有应用,固化在芯片中什么的, 烦请请高手指点一下。…

查看全部问答>

我的独立看门狗总结,请批评更正!(30楼窗口看门狗总结)

一、独立看门狗IWDG概述 1.)看门狗设备(独立看门狗和窗口看门狗)可用来检测和解决由软件错误引起的故障;当计数器达到给定的超时值时,触发一个中断或产生系统复位。2.)功能图:(由于本人无法贴图,请见参考手册,125页) 3 ...…

查看全部问答>

求分析关于1602的几行程序

以下是程序中有?号的行不懂?请高手帮忙解答,灰常感谢~               /*******************************************函数名称:LocateXY功    能:向液晶输入显示字符位置的坐标信 ...…

查看全部问答>

既然有ADS这个工具,为什么还要学GCC啊?

如题,做ARM-LINUX 嵌入式开发,不是有ADS这个工具嘛,在WINDOWS 环境下,用ADS这个编译工具,写完并且编译好需要下载到开发板中的程序,然后,还能用AXD这个工具进行在线调试开发板,这是不是就够了呢。 那为什么还需要在LINUX环境中,比如RED HA ...…

查看全部问答>

求帮助设计一个关于电梯运行的控制电路

一个四层楼的建筑,两个电梯:电梯1和电梯2要求:1,当处于某层的一个人按动“呼叫”命令时,距离他较近的电梯到来;           2,如果两个电梯和这个人距离一样,则“电梯1”到来        &nbs ...…

查看全部问答>

430F169AD采样工作有间断期

#include #define   Num_of_Results   8 uint ADC_BUF0[Num_of_Results]; uint ADC_BUF1[Num_of_Results]; uint sumI;            //定义电流采样均值 uint sumV;    ...…

查看全部问答>

msp430 STM32 STM8 CC2500开发板及仿真器等一批!!甩卖~~

亲们,工作有一段时间了,有一批板子老是带在身边不方便。。。甩卖了!!!有需要的联系qq 1556857003 手机就不留了~~ 各种板子,如果没有亲们要的,就捧个热场~~ 所有板子的资料配件均齐全,拍下后可以网传。。。 支付宝交易。。。 不知道为什 ...…

查看全部问答>

开发板

   瑞萨开发板买不到怎么办??????????、 …

查看全部问答>