max1862.asm

来自「单片机C语言教程」· 汇编 代码 · 共 62 行

ASM
62
字号
;/* 这是MAX186的汇编程序,  文件名MAX1862.ASM                      */
;/* 功能:本程序主要是读出MAX186输入通道CH0,CH1,..CH7的模数转换值,*/
;/*    转换值放在内存30H和31H中,30H放高位。MAX186芯片的8个通道    */
;/*    可编程为单极性/双极性和差动/单端工作, 这里采用单端\单极性  */
;/*    输入。MAX186有内部时钟和外部时钟两种工作模式,这里采用内    */
;/*    部时钟模式。MAX186有内带4.096V的参考电压,也可用外部参考   */
;/*    电压,这里采用内带4.096V的参考电压。                       */
CS           EQU                 P1.0
SCLK         EQU                 P1.1
DIN          EQU                 P1.3
DOUT         EQU                 P1.2
SSTRB        EQU                 P1.4

            ORG 0000H
            AJMP  MAIN
            ORG 0030H
MAIN:       MOV SP,#60H
            CLR EA
            MOV 30H,#00
            MOV 31H,#00    ;清转换结果存放字节
            MOV A,#08EH    ;写控制字节:8EH,第1通道,单极性、单端、内部时钟方式
            MOV R1,#8      ;写控制字节:CEH,第2通道,单极性、单端、内部时钟方式
LOOP:       CLR CS         ;置CS为有效
            CLR C
            RLC A
            MOV DIN,C
            CLR SCLK
            SETB SCLK
            DJNZ R1,LOOP
            SETB SCLK
            CLR SCLK
;DOG:        JNB SSTRB,DOG  ;用查询法等待转换完毕
;            LCALL DELAY1   ;用延时法等待转换完毕
            NOP
            MOV R1,#4
            MOV R0,#8
LOOP1:      SETB SCLK      ;读取高4位
            CLR SCLK
            MOV C,DOUT
            MOV A,31H
            RLC A
            MOV 31H,A
            DJNZ R1,LOOP1
LOOP2:      SETB SCLK      ;读取低8位
            CLR SCLK
            MOV C,DOUT
            MOV A,30H
            RLC A
            MOV 30H,A
            DJNZ R0,LOOP2
            SETB CS
            LJMP $
            RET
DELAY1:     MOV A,#1   ;延时1MS
DELAY11:    MOV R0,#250
DLP1:       NOP
            NOP
            DJNZ R0,DLP1
            DJNZ ACC,DELAY11
            RET
            END

⌨️ 快捷键说明

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