历史上的今天
今天是: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
史海拾趣
|
长期以来,以Flash Memory为存储体的SD卡因具备体积小、功耗低、可擦写以及非易失性等特点而被广泛应用于消费类电子产品中。特别是近年来,随着价格不断下降且存储容量不断提高,它的应用范围日益增广。当数据采集系统需要长时间地采集、记录海量数 ...… 查看全部问答> |
|
如果程序中即有C代码,又有汇编代码,那汇编代码编译连接后,会被放到物理地址的什么地址,这个由哪里的设置决定 在keil的options里设置的片内FLASH 我的片内FLASH起始地址为:0xC00000 编译后C代码都写到这里了,可是汇编的代码却写到0x000A6A ...… 查看全部问答> |
|
ucos中的OSUnMapTbl是一个很大的静态数组,提高查找速度 以前看过一个网页说 这中设计思想在硬件设计中也有应用,固化在芯片中什么的, 烦请请高手指点一下。… 查看全部问答> |
|
一、独立看门狗IWDG概述 1.)看门狗设备(独立看门狗和窗口看门狗)可用来检测和解决由软件错误引起的故障;当计数器达到给定的超时值时,触发一个中断或产生系统复位。2.)功能图:(由于本人无法贴图,请见参考手册,125页) 3 ...… 查看全部问答> |
|
以下是程序中有?号的行不懂?请高手帮忙解答,灰常感谢~ /*******************************************函数名称:LocateXY功 能:向液晶输入显示字符位置的坐标信 ...… 查看全部问答> |
|
如题,做ARM-LINUX 嵌入式开发,不是有ADS这个工具嘛,在WINDOWS 环境下,用ADS这个编译工具,写完并且编译好需要下载到开发板中的程序,然后,还能用AXD这个工具进行在线调试开发板,这是不是就够了呢。 那为什么还需要在LINUX环境中,比如RED HA ...… 查看全部问答> |
|
一个四层楼的建筑,两个电梯:电梯1和电梯2要求:1,当处于某层的一个人按动“呼叫”命令时,距离他较近的电梯到来; 2,如果两个电梯和这个人距离一样,则“电梯1”到来 &nbs ...… 查看全部问答> |
|
#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 手机就不留了~~ 各种板子,如果没有亲们要的,就捧个热场~~ 所有板子的资料配件均齐全,拍下后可以网传。。。 支付宝交易。。。 不知道为什 ...… 查看全部问答> |




