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

📄 main.asm

📁 汇编写的51程序
💻 ASM
字号:
 ;ADC CONTROL,TIMER0 INTERRUPT
ADCOUNTER data 30H
sgl data 31h
channelbit bit 7fH
xdirection bit 7eh
ydirection bit 7dh
X0OUTPUT  BIT  0E0H
X1OUTPUT BIT 0E1H
Y0OUTPUT BIT 0E4H
Y1OUTPUT BIT 0E5H
buffer00 equ 0ah
buffer01 equ 0ah
buffer02 equ 0ah
buffer03 equ 0ah
buffer04 equ 0ah
buffer05 equ 0ah
buffer06 equ 0ah
buffer07 equ 0ah
buffer08 equ 0ah
buffer09 equ 0ah
buffer10 equ 0ah



         org 0000h
         JMP MAIN
         ORG 000BH
         JMP ADSTART
         ORG 001BH
         JMP TIMER1

         ORG 0030H
   MAIN:
          MOV R4,#11001100B
          MOV R5,#11001100B
          MOV TH0,#0B1H             ;TIMER0 定时周期2MS 每秒50次采样
          MOV TL0,#0E0H             ;
          MOV TH1,#00H
          MOV TL1,#206             ;50*2US T1定时周期0.1毫秒
          MOV TMOD,#00100001B           ;定时器0工作方式1,定时器1工作方式2
          SETB TR0
          SETB ET0
          SETB TR1
          SETB ET1
          SETB EA
          MOV R2,#0FFH
          MOV R3,#0FFH
          MOV R0,#0FFH
          MOV R1,#0FFH

   HERE:   JMP HERE


  ;**********************************************************************************************************************************
  ;  TIMER1 INTERRUPTION    根据定时规则,定时0.1MS 以此为基数进行计数,控制各通道得刷新频率。
  ;  R0,R1中是计数器,每次到零改变引脚状态一次,R4,R5是引脚状态移位器
  ;
  ;******************************************************************************************************
TIMER1:
          CJNE R0,#0FFH,CHANGEX
          MOV A, R2                   ;REFRESH X PARAMETER
          MOV R0,A
          JMP XENDLOOP

CHANGEX:
                CJNE R0,#00H,CHANGER0



                MOV A, R2                   ;REFRESH X PARAMETER
                MOV R0,A                   ;重载R0
                MOV A,R4
                JB XDIRECTION, XROLL              ;移位后输出
                RL A
                JMP XROLLEND
XROLL:          RR A
XROLLEND:
                MOV R4,A
                JNB X0OUTPUT,X0VOTE
                   SETB P1.2
                JMP X0VOTEEND
   X0VOTE:      CLR P1.2

  X0VOTEEND:    JNB X1OUTPUT,X1VOTE
                   SETB P1.3
                JMP X1VOTEEND
   X1VOTE:      CLR P1.3




  X1VOTEEND:    JMP XENDLOOP
CHANGER0:       DEC R0


XENDLOOP:

                CJNE R1,#0FFH,CHANGEY
                MOV A,R3                   ;REFRESH X PARAMETER
                MOV R1,A
                JMP YENDLOOP

CHANGEY:
                CJNE R1,#00H,CHANGER1


                MOV A, R3                   ;REFRESH Y PARAMETER
                MOV R1,A                   ;重载R0
                MOV A,R5
                JB YDIRECTION, YROLL              ;移位后输出
                RL A
                JMP YROLLEND
YROLL:          RR A
YROLLEND:
                MOV R5,A
                JNB Y0OUTPUT,Y0VOTE
                   SETB P1.4
                JMP Y0VOTEEND
   Y0VOTE:      CLR P1.4

  Y0VOTEEND:    JNB Y1OUTPUT,Y1VOTE
                   SETB P1.5
                JMP Y1VOTEEND
   Y1VOTE:      CLR P1.5

  Y1VOTEEND:    JMP YENDLOOP
CHANGER1:       DEC R1


YENDLOOP:


                MOV TH1,#00H
                MOV TL1,#206             ;50*2US T1定时周期0.1毫秒
                RETI











  ;**********************************************************************************************************************************
  ;   TIMER0 INTERRUPT , 从P3口与ADC0832通信获得两路模拟信息,并作处理使R2,R3暂存两路强度信息
  ;   XDIRECTION,YDIRECTION 保存两路的方向信息。
  ;
  ;******************************************************************************************************



ADSTART:  MOV P3,#00H
 MOV SGL,#02H
 CLR P3.0	;CLOCK=0
 CLR A
ADCHANNEL: MOV R2,A
 MOV R3,A
 SETB P3.2	;START BIT
 CLR P3.1	;CS=0
 ACALL CLOCK
 SETB P3.2	;SGL/DIF=1
 ACALL CLOCK
 JNB CHANNELBIT,CHANNEL0
 SETB P3.2		;SELECT CHANNEL1 Y
 CLR CHANNELBIT
CHANNEL0: CLR P3.2	;SELECT CHANNEL0 X
 SETB CHANNELBIT
 ACALL CLOCK

 MOV ADCOUNTER,#09H
ADREAD:ACALL CLOCK
 MOV C,B.3
 RLC A
 DJNZ ADCOUNTER,ADREAD
 SETB P3.1		;CS=1
 DJNZ SGL,ADCHANNEL
 MOV R3,A

 ;X CHNNEL FREQUENCY PARAMETER

 CLR A
 MOV B,#128
 MOV A,R2
 DIV AB
 CLR XDIRECTION
 JNZ LOOPX
 MOV A,#128  ;A=128
 SUBB A,B
 SETB XDIRECTION
 JMP LOOPX1
LOOPX:
      MOV A,B


LOOPX1: CLR C
 SUBB A,#BUFFER00
 MOV R2,#0FFH		;X NOT MOVE
 JC LOOPXEND

 SUBB A,#BUFFER01
 MOV R2,#0FAH		;X MOVE PARAMETER 250
 JC LOOPXEND

 SUBB A,#BUFFER02
 MOV R2,#0A6H		;X MOVE PARAMETER 166
 JC LOOPXEND

 SUBB A,#BUFFER03
 MOV R2,#06FH		;X MOVE PARAMETER 111
 JC LOOPXEND

 SUBB A,#BUFFER04
 MOV R2,#049H		;X MOVE PARAMETER 73
 JC LOOPXEND

 SUBB A,#BUFFER05
 MOV R2,#031H		;X MOVE PARAMETER 49
 JC LOOPXEND

 SUBB A,#BUFFER06
 MOV R2,#020H		;X MOVE PARAMETER 32
 JC LOOPXEND

 SUBB A,#BUFFER07
 MOV R2,#015H		;X MOVE PARAMETER 21
 JC LOOPXEND

 SUBB A,#BUFFER08
 MOV R2,#0EH		;X MOVE PARAMETER 14
 JC LOOPXEND

 SUBB A,#BUFFER09
 MOV R2,#0AH		;X MOVE PARAMETER 10
 JC LOOPXEND

 SUBB A,#BUFFER10
 MOV R2,#06H		;X MOVE PARAMETER 6
 JC LOOPXEND

 MOV R2,#05H		;X MOVE PARAMETER 5

LOOPXEND: NOP

  ; Y CHNNEL FREQUENCY PARAMETER


 CLR A
 MOV B,#128
 MOV A,R3
 DIV AB
 CLR YDIRECTION
 JNZ LOOPY
 MOV A,#128   ;A=128
 SUBB A,B
 SETB YDIRECTION
 JMP LOOPY1
LOOPY: MOV A,B

LOOPY1: CLR C
 SUBB A,#BUFFER00
 MOV R3,#0FFH		;Y NOT MOVE
 JC LOOPYEND

 SUBB A,#BUFFER01
 MOV R3,#0FAH		;Y MOVE PARAMETER 250
 JC LOOPYEND

 SUBB A,#BUFFER02
 MOV R3,#0A6H		;Y MOVE PARAMETER 166
 JC LOOPYEND

 SUBB A,#BUFFER03
 MOV R3,#06FH		;Y MOVE PARAMETER 111
 JC LOOPYEND

 SUBB A,#BUFFER04
 MOV R3,#049H		;Y MOVE PARAMETER 73
 JC LOOPYEND

 SUBB A,#BUFFER05
 MOV R3,#031H		;Y MOVE PARAMETER 49
 JC LOOPYEND

 SUBB A,#BUFFER06
 MOV R3,#020H		;Y MOVE PARAMETER 32
 JC LOOPYEND

 SUBB A,#BUFFER07
 MOV R3,#015H		;Y MOVE PARAMETER 21
 JC LOOPYEND

 SUBB A,#BUFFER08
 MOV R3,#0EH		;Y MOVE PARAMETER 14
 JC LOOPYEND

 SUBB A,#BUFFER09
 MOV R3,#0AH		;Y MOVE PARAMETER 10
 JC LOOPYEND

 SUBB A,#BUFFER10
 MOV R3,#06H		;Y MOVE PARAMETER 6
 JC LOOPYEND

 MOV R3,#05H		;Y MOVE PARAMETER 5

LOOPYEND:
          MOV TH0,#0B1H             ;TIMER0 定时周期2MS 每秒50次采样
          MOV TL0,#0E0H             ;

          RETI


 ;CLOCKER CHANGE THE CLOCK LINE AND READ DATA TO B

CLOCK: PUSH A
 SETB P3.3		;DATA OUTPUT
 MOV A,P3
 SETB P3.0		;CLOCK=1
 MOV B,A
 POP A
 CLR P3.0		;CLOCK=0
 RET
end












⌨️ 快捷键说明

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