⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ex9-1a.asm

📁 《增强型8051单片机实用开发技术》例程代码
💻 ASM
字号:
$INCLUDE  (STC12C5A.INC)        ;包含STC12C5A60S2单片机寄存器定义文件
ADC_DAT   EQU 30H               ;A/D转换结果
    ORG    0000H 
    LJMP   MAIN 
    ORG    0050H 
MAIN: 
    MOV   SP, #70H         	    ;设置堆栈 
    ORL   ADC_CONTR, #80H 	    ;开A/D转换电源,第一次使用时要打开内部模拟电源
    MOV   A, #20H 
    LCALL DELAY                 ;开A/D转换电源后要加适当延时,1ms以内即可 
    MOV	  P1ASF,#04H		   	;设置P1.2的模拟量功能
    MOV   ADC_CONTR,#11100010B  ;选择P1.2作为A/D转换通道
    MOV   A, #05H
    LCALL DELAY                 ;如果切换A/D转换通道,则需要加延时 
WAIT_AD:
	ORL   ADC_CONTR, #00001000B ;启动A/D转换 
    MOV   A, #00010000B         ;判断A/D转换是否完成 
    ANL   A, ADC_CONTR 
    JZ    WAIT_AD               ;A/D 转换尚未完成, 继续等待 
    ANL   ADC_CONTR, #11100111B ;将ADC_FLAG清0
    MOV   A, ADC_RES            ;读取A/D转换结果
    MOV   ADC_DAT, A            ;保存A/D转换结果 
    LJMP  WAIT_AD               ;等待下一次转换完成
DELAY:                          ;延时子程序
    PUSH  02                    ;将寄存器组0 的 R2 入栈 
    PUSH  03                    ;将寄存器组0 的 R3 入栈 
    PUSH  04                    ;将寄存器组0 的 R4 入栈 
    MOV   R4, A 
DELAY_LOOP0:                    ;DELAY_LOOP0循环延时200406个时钟周期
    MOV    R3, #200             ;2个时钟周期
Delay_LOOP1:                    ;DELAY_LOOP1循环延时1002个时钟周期
    MOV    R2, #249             ;2个时钟周期
DELAY_LOOP:
    DJNZ  R2, DELAY_LOOP        ;4个时钟周期 
    DJNZ  R3, DELAY_LOOP1       ;4个时钟周期
    DJNZ  R4, DELAY_LOOP0       ;4个时钟周期
    POP   04 
    POP   03 
    POP   02 
    RET 
    END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -