📄 nc.asm
字号:
;====================================================================
;Procedure name: gri.asm
;The date of development: 2001.12
;Crystal Oscillator: 12MHz
;Microcontroller: AT89C51 (Producted by ATEMEL Corporation)
;Developing devices: Personal Computer(486DX);EMP-100A;Avsim51
;Author: Lixiufeng
;====================================================================
;----------------------------------------------------------------
;//define all the pins of the Micocontrollor(AT89C51)
YAB bit p0.0 ;Y axis a phase
YB bit p0.1 ;Y axis b phase
YBB bit p0.2 ;Z axis a phase
YA bit p0.3 ;Z axis b phase
XStop bit p0.4 ;X axis stop switch
minus bit p0.5 ;display "-"
LDAT bit p0.6 ;display dada
LCLK bit p0.7 ;display clock
Xr bit p1.0 ;right side switch of X axis
Xl bit p1.1 ;left side switch of X axis
Man bit p1.2 ;Manual operation
Sauto bit p1.3 ;Semi auto operation
Auto bit p1.4 ;Auto operation
Cylin bit p1.5 ;Alow cylinder work
IN1 bit p1.6 ;extra inport 1
IN2 bit p1.7 ;extra inport 2
Line1 bit p2.0 ;keyboard line 1
Line2 bit p2.1 ;keyboard line 2
Line3 bit p2.2 ;keyboard line 3
Line4 bit p2.3 ;keyboard line 4
ZB bit p2.4 ;extra outport 1 with amplfier
ZBB bit p2.5 ;extra outport 2
ZA bit p2.6 ;extra outport 3
ZAB bit p2.7 ;extra outport 4
Col1 bit p3.0 ;keyboard column 1
Col2 bit p3.1 ;keyboard column 2
Col3 bit p3.2 ;keyboard column 3
Col4 bit p3.3 ;keyboard column 4
Col5 bit p3.4 ;keyboard column 5
Col6 bit p3.5 ;keyboard column 6
Col7 bit p3.6 ;keyboard column 7
O5 bit p3.7 ;extra outport 5
;--------------------------------------------------------------------
;//define the flag
keybuff0 equ 20h ;keyboard line 1
keybuff1 equ 21h ;keyboard line 2
keybuff2 equ 22h ;keyboard line 3
keybuff3 equ 23h ;keyboard line 4
k00 bit 00h ;"k1" key flag.
k01 bit 01h ;"k2" key flag.
k02 bit 02h ;"k3" key flag.
k03 bit 03h ;"k4" key flag.
k04 bit 04h ;"k5" key flag.
k05 bit 05h ;"k6" key flag.
k06 bit 06h ;"k7" key flag.
k07 bit 07h ;
k10 bit 08h ;"k8" key flag.
k11 bit 09h ;"k9" key flag.
k12 bit 0ah ;"k10" key flag.
k13 bit 0bh ;"k11" key flag.
k14 bit 0ch ;"k12" key flag.
k15 bit 0dh ;"k13" key flag.
k16 bit 0eh ;"k14" key flag.
k17 bit 0fh ;
k20 bit 10h ;"k15" key flag.
k21 bit 11h ;"k16" key flag.
k22 bit 12h ;"k17" key flag.
k23 bit 13h ;"k18" key flag.
k24 bit 14h ;"k19" key flag.
k25 bit 15h ;"k20" key flag.
k26 bit 16h ;"k21" key flag.
k27 bit 17h ;
k30 bit 18h ;"k22" key flag.
k31 bit 19h ;"k23" key flag.
k32 bit 1ah ;"k24" key flag.
k33 bit 1bh ;"k25" key flag.
k34 bit 1ch ;"k26" key flag.
k35 bit 1dh ;"k27" key flag.
k36 bit 1eh ;"k28" key flag.
k37 bit 1fh ;
flag1 equ 24h ;the first status flag register.
x_dir bit 20h ;0向右移动,1向左移动
y_dir bit 21h ;0向前移动,1向后移动
no_move_f bit 22h ;point key is pressed
; bit 23h ;motor y phase flag
zphaseflag bit 24h ;motor z phase flag
zdis_f bit 25h ;display z coordinates
auto_exit_f bit 26h ;
; bit 27h ;
flag2 equ 25h ;the second status flag register.
pc_a_flag bit 28h ;
pc_b_flag bit 29h ;
pc_c_flag bit 2ah ;
pc_d_flag bit 2bh ;
pc_e_flag bit 2ch ;
pc_f_flag bit 2dh ;
tderr_flag bit 2eh ;
rderr_flag bit 2fh ;
flag3 equ 26h ;the third status flag register.
ysign_flag bit 30h ;1 is posive, 0 is negtive, y axis position
zsign_flag bit 31h ;1 is posive, 0 is negtive, z axis position
ymove_flag bit 32h ;0 is posive, 1 is negtive
zmove_flag bit 33h ;
yinsign_flag bit 34h ;1 is posive, 0 is negtive, value to be moved
zinsign_flag bit 35h ;
r_y_flag bit 36h ;flag for reduce ratio of y, 4 steps for 0.01mm
r_z_flag bit 37h ;flag for reduce ratio of z, 8 steps for 0.01mm
flag4 equ 27h ;the fourth status flag register.
yfeed_flag bit 38h ;"1" y need a feed move
zfeed_flag bit 30h ;
; bit 3ah ;
; bit 3bh ;
; bit 3ch ;speed up stage
; bit 3dh ;speed down state
; bit 3eh ;have level stage
disp_flag bit 3fh ;display y or z
; equ 28h ;sspd clock counter.
num_k_f bit 40h ;number key flag
x_f bit 41h
y_f bit 42h
H_f bit 43h
a_f bit 44h
b_f bit 45h
c_f bit 46h
d_f bit 47h
;keyvalue equ 29h ;
e_f bit 48h
f_f bit 49h
o_f bit 4ah
;ecount_menu equ 2ah ;
oy1 equ 2bh ;
oy2 equ 2ch ;
oy3 equ 2dh ;current position value of z axis
oy4 equ 2eh ;-640.00mm to 640.00mm
oy5 equ 2fh ;
;-----------------------------------------------------------------
;//define the RAM region
indata1 equ 30h ;buffer of shifting data
indata2 equ 31h ;
indata3 equ 32h ;
indata4 equ 33h ;
indata5 equ 34h ;
ox1 equ 35h ;
ox2 equ 36h
ox3 equ 37h ;number of pulse movement
ox4 equ 38h ;
ox5 equ 39h ;y axis value to be moved
ax3 equ 3ah ;
ax4 equ 3bh ;
ax5 equ 3ch ;
ay1 equ 3dh ;z axis value to be moved
ay2 equ 3eh ;
ay3 equ 3fh ;
ay4 equ 40h ;
ay5 equ 41h ;
bx1 equ 42h ;
bx2 equ 43h ;
bx3 equ 44h ;
bx4 equ 45h ;
bx5 equ 46h ;
by1 equ 47h ;
by2 equ 48h ;current position value of y axis
by3 equ 49h ;-640.00mm to 640.00mm
by4 equ 4ah ;
by5 equ 4bh ;
cx1 equ 4ch ;
cx2 equ 4dh ;
cx3 equ 4eh ;
cx4 equ 4fh ;motor move speed, 64000 is the highest value
cx5 equ 50h ;
cy1 equ 51h ;
cy2 equ 52h ;
cy3 equ 53h ;
cy4 equ 54h ;
cy5 equ 55h ;
ax1 equ 56h ;
ax2 equ 57h ;
data1 equ 58h ;
data2 equ 59h ;
data3 equ 5ah ;for speed up
data4 equ 5bh ;
data5 equ 5ch ;
time1 equ 5dh ;
time2 equ 5eh ;
time3 equ 5fh ;
;--------------------------------------------------------------
;//define the data used in the procedure.
_stack data 60h ;stack pointer=60h
dspbufflenth data 8 ;
;--------------------------------------------------------------
;//define the display data symbol for the purpose of reading.
_ledhiden data 0ffh
_0 data 0
_1 data 1
_2 data 2
_3 data 3
_4 data 4
_5 data 5
_6 data 6
_7 data 7
_8 data 8
_9 data 9
_A data 10
_b data 11
_c data 12
_d data 13
_E data 14
_F data 15
_H data 16
_x data 17
_y data 18
_o data 19
_4. data 20
_5. data 21
_6. data 22
_7. data 23
_8. data 24
_9. data 25
_P. data 26
;_Y data 27
_BK data 28
;**************************************************************
; MAIN PROGRAM
; (General board for the Optical Sensor and SCARA)
;**************************************************************
org 0
sjmp main ;main procedure entry.
; org 0003h ;int0 entrance.
org 000bh
ajmp motory ;t0 int_procedure entry.
; org 0013h
; ajmp menu ;int1 int_procedure entry.
; org 001bh ;t1 entrance.
; ajmp motorz
; org 0023h ;serial entrance.
; ajmp serial
;==================================================================
;name: main procedure
;number:
;used resoures:
;algorithm:
;------------------------------------------------------------------
org 40h
main: mov sp,#_stack
;//set stack pointer "#_stack",stack amount:32byte.
mov r0,#20h ;initialize the clr_pointer.
mov r1,#64 ;endow "R1" with initial value.
main_clr_RAM: mov @r0,#0
inc r0
djnz r1,main_clr_RAM
;//clear the used RAM region from 20h to 5fh(64byte).
mov th0, #0ffh
mov tl0, #014h ;normal cp of motor stopped
mov th1, #0ffh
mov tl1, #014h
mov indata1, #0;
mov indata2, #1
mov indata3, #2
mov indata4, #3
mov indata5, #4 ;send "P." to Y coordinate.
lcall led
mov tmod,#00010001b ;set T0, T1 mode 1.
clr ea
setb ex0 ;enable interrupt0
setb ex1 ;enable interrupt1
setb tr0 ;start timer0
setb tr1 ;start timer1
setb ea
setb et0
key_return: lcall keyscane
jb k00, x1 ;1
lcall number_tri
ajmp key_return
x1: jb k01, x2 ;2
lcall number_tri
ajmp key_return
x2: jb k02, x3 ;3
lcall number_tri
ajmp key_return
x3: jb k03, x4 ;0
lcall number_tri
ajmp key_return
x4: jb k04, x5 ;a key pressed
jb o_f, x4_2
jb x_f, x4_1
jb y_f, x4_1
jb H_f, x4_1
sjmp x5
x4_1: setb a_f
mov indata2, #_A
lcall led
sjmp x5
x4_2: jnb x_f, x4_21
mov indata1, ax1
mov indata2, ax2
mov indata3, ax3
mov indata4, ax4
mov indata5, ax5
clr o_f
clr x_f
lcall led
x4_21: jnb y_f, x4_22
mov indata1, ay1
mov indata2, ay2
mov indata3, ay3
mov indata4, ay4
mov indata5, ay5
clr y_f
lcall led
x4_22: clr o_f
x5: jb k05, x6 ;b key pressed
jb o_f, x5_2
jb x_f, x5_1
jb y_f, x5_1
jb H_f, x5_1
sjmp x6
x5_1: setb b_f
mov indata2, #_b
lcall led
sjmp x6
x5_2: jnb x_f, x5_21
mov indata1, bx1
mov indata2, bx2
mov indata3, bx3
mov indata4, bx4
mov indata5, bx5
clr o_f
clr x_f
lcall led
x5_21: jnb y_f, x5_22
mov indata1, by1
mov indata2, by2
mov indata3, by3
mov indata4, by4
mov indata5, by5
clr y_f
lcall led
x5_22: clr o_f
x6: jb k06, y0 ;x key pressed
jb o_f, x6_1
clr num_k_f
mov data1, indata1
mov data2, indata2
mov data3, indata3
mov data4, indata4
mov data5, indata5
setb x_f
mov indata1, #_x
mov indata2, #_BK
mov indata3, #_BK
mov indata4, #_BK
mov indata5, #_BK
lcall led
sjmp y0
x6_1: setb x_f
mov indata2, #_x
lcall led
y0: jb k10, y1 ;4
lcall number_tri
ajmp key_return
y1: jb k11, y2 ;5
lcall number_tri
ajmp key_return
y2: jb k12, y3 ;6
lcall number_tri
ajmp key_return
y3: jb k13, y4 ; output data
clr num_k_f
setb o_f
mov indata1, #_o
mov indata2, #_BK
mov indata3, #_BK
mov indata4, #_BK
mov indata5, #_BK
lcall led
y4: jb k14, y5 ;c key pressed
jb o_f, y4_2
jb x_f, y4_1
jb y_f, y4_1
jb H_f, y4_1
sjmp y5
y4_1: setb c_f
mov indata2, #_c
lcall led
sjmp y5
y4_2: jnb x_f, y4_21
mov indata1, cx1
mov indata2, cx2
mov indata3, cx3
mov indata4, cx4
mov indata5, cx5
clr o_f
clr x_f
lcall led
y4_21: jnb y_f, y4_22
mov indata1, cy1
mov indata2, cy2
mov indata3, cy3
mov indata4, cy4
mov indata5, cy5
clr y_f
lcall led
y4_22: clr o_f
y5: jb k15, y6 ;
nop
y6: jb k16, z0 ;y key pressed
jb o_f, y6_1
clr num_k_f
mov data1, indata1
mov data2, indata2
mov data3, indata3
mov data4, indata4
mov data5, indata5
setb y_f
mov indata1, #_y
mov indata2, #_BK
mov indata3, #_BK
mov indata4, #_BK
mov indata5, #_BK
lcall led
sjmp z0
y6_1: setb y_f
mov indata2, #_y
lcall led
z0: jb k20, z1 ;7
lcall number_tri
ajmp key_return
z1: jb k21, z2 ;8
lcall number_tri
ajmp key_return
z2: jb k22, z3 ;9
lcall number_tri
ajmp key_return
z3: jb k23, z4 ;H
clr num_k_f
setb H_f
mov indata1, #_H
mov indata2, #_BK
mov indata3, #_BK
mov indata4, #_BK
mov indata5, #_BK
lcall led
z4: jb k24, z5 ;e
cpl p1.0
nop
z5: jb k25, z6 ;f
jb o_f, z5_2
jb x_f, z5_1
jb y_f, z5_1
jb H_f, z5_1
sjmp z6
z5_1: setb f_f
mov indata2, #_F
lcall led
sjmp z6
z5_2: jnb x_f, z5_21
mov indata1, ox1
mov indata2, ox2
mov indata3, ox3
mov indata4, ox4
mov indata5, ox5
clr o_f
clr x_f
lcall led
z5_21: jnb y_f, z5_22
mov indata1, oy1
mov indata2, oy2
mov indata3, oy3
mov indata4, oy4
mov indata5, oy5
clr y_f
lcall led
z5_22: clr o_f
nop
z6: jb k26, z7 ;enter
lcall tri_enter
z7: jb k30, zz1
lcall x_r_move
zz1: jb k32, zz2
lcall x_l_move
zz2: jb k34, zz3
lcall y_f_move
zz3: jb k36, zz4
lcall y_b_move
zz4: ajmp key_return
motory: push psw
clr tr0
cpl p1.1
mov tl0, #0efh
mov th0, #0eeh
setb tr0
pop psw
reti
;******************************************************************
x_r_move: push psw ;move x to right
clr x_dir
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -