?? bcd.asm
字號:
bmbin_bcd: mov r3, #8
bmsjcl: clr c
mov a, bmqdata0 ;將采集的數據左移一位
rlc a
mov bmqdata0, a
mov a, bmbcd0
addc a, bmbcd0
da a
mov bmbcd0, a
mov a, bmbcd1
addc a, bmbcd1
da a
mov bmbcd1, a
djnz r3, bmsjcl
;====================================================================
;Procedure name: test.asm
;The date of development: 2002.05
;Crystal Oscillator: 11.0592MHz
;Microcontroller: AT89C51 (Producted by ATEMEL Corporation)
;Developing devices: Personal Computer(486DX);EMP-100A;Avsim51
;Author: YZTC
;====================================================================
;----------------------------------------------------------------
;//define all the pins of the Microcontrollor(AT89C51)
Q1 bit p0.0 ;七段編碼器數據輸入0
Q2 bit p0.1 ;七段編碼器數據輸入1
Q3 bit p0.2 ;七段編碼器數據輸入2
Q4 bit p0.3 ;七段編碼器數據輸入3
AQ1 bit p0.4 ;譯碼器數據輸入0
BQ2 bit p0.5 ;譯碼器數據輸入1
CQ3 bit p0.6 ;譯碼器數據輸入2
dp1 bit p0.7 ;顯示小數點
line1 bit p1.0 ;鍵盤行線輸入1
line2 bit p1.1 ;鍵盤行線輸入2
col1 bit p1.2 ;鍵盤列線輸入1
col2 bit p1.3 ;鍵盤列線輸入2
col3 bit p1.4 ;鍵盤列線輸入3
bmqa bit p1.5 ;編碼器輸入信號a
bmqs bit p1.6 ;編碼器輸入信號c
bmqb bit p1.7 ;編碼器輸入信號b
M1A bit p2.0 ;電機1信號A輸入
M1B bit p2.1 ;電機1信號B輸入
M1C bit p2.2 ;電機1信號C輸入
M1D bit p2.3 ;電機1信號D輸入
M2A bit p2.4 ;電機2信號A輸入
M2B bit p2.5 ;電機2信號B輸入
M2C bit p2.6 ;電機2信號C輸入
M2D bit p2.7 ;電機2信號D輸入
_RXD bit p3.0 ;extra pin
_TXD bit p3.1 ;extra pin
; bit p3.2 ;extra pin
; bit p3.3 ;key board interrupt input pin.
; bit p3.4 ;extra pin
gsa bit p3.5 ;光柵輸入信號a
gss bit p3.6 ;光柵輸入信號c
gsb bit p3.7 ;光柵輸入信號b
;--------------------------------------------------------------------
;//define the flag
;--------------------------------------------------------------------
;dir_flag bit 24h ;for direction
commu_state equ 25h
s6 bit 28h
s7 bit 29h ;0 represent 1
s5 bit 2ah ;show communication state
s4 bit 2bh ;
s3 bit 2ch ;
key_state equ 26h
;key_pressed bit 30h ;1表示有鍵壓下,0表示無鍵壓下
key1_f bit 31h ;1表示鍵1壓下
key2_f bit 32h ;1表示鍵2壓下
key3_f bit 33h ;1表示鍵3壓下
key4_f bit 34h ;1表示鍵4壓下
key5_f bit 35h ;1表示鍵5壓下
key6_f bit 36h ;1表示鍵6壓下
moveflag equ 27h ;single shaft movement flag
m1_s bit 38h ;move to right
m2_s bit 39h ;move to left
m1_p bit 3ah ;move forward
m1_n bit 3bh ;move backward
m2_p bit 3ch ;move up
m2_n bit 3dh ;move down
gs_state equ 28h ;光柵狀態
gsa_f bit 40h ;
gsb_f bit 41h ;
gss_f bit 42h
dir0_f bit 43h
bmq_state equ 29h ;編碼器狀態
bmqa_f bit 48h ;
bmqb_f bit 49h
bmqs_f bit 4ah
dir_f bit 4bh
ychu_state equ 2ah
yczb_f bit 51h ;編碼器反轉加脈沖標志
yczb1_f bit 52h ;編碼器正轉減脈沖標志
yczb0_f bit 53h ;光柵負移動加脈沖標志
yczb01_f bit 54h ;光柵正移動加脈沖標志
;-----------------------------------------------------------------
;//define the RAM region
;-----------------------------------------------------------------
movement equ 30h ;data from computer to show 26 kinds of
;movements such as +x, +x+y, +x+y+z
wait_time equ 31h ;data from computer to timer0 for waiting
moveempty equ 32h
time1 equ 33h
time2 equ 34h
number12 equ 35h ;存放顯示數據1,2位
number34 equ 36h ;存放顯示數據3,4位
number56 equ 37h ;存放顯示數據5,6位
number78 equ 38h ;存放顯示數據7,8位
move_type equ 39h ;設置電機轉動組合類型
gsshanju equ 40h ;存放光柵的柵距
bmshanju equ 41h ;存放編碼器的柵距
gsdata0 equ 42h ;存放光柵采集的數據
gsdata1 equ 43h
gsdata2 equ 44h
gsbcd0 equ 45h ;處理后光柵bcd碼
gsbcd1 equ 46h
gsbcd2 equ 47h
gsbcd3 equ 48h
bmqdata0 equ 49h ;存放編碼器采集的數據
bmqdata1 equ 4ah
bmqdata2 equ 4bh
bmbcd0 equ 4ch ;處理后編碼器bcd碼
bmbcd1 equ 4dh
bmbcd2 equ 4eh
bmbcd3 equ 4fh
bmqa_sign equ 50h
bmqb_sign equ 51h
direction equ 52h
motor1_phase equ 53h
motor2_phase equ 54h
gsa_sign equ 55h
gsb_sign equ 56h
direction0 equ 57h
motor_move equ 58h
;--------------------------------------------------------------
;//define the data used in the procedure.
_stack data 60h ;stack pointer=60h
dspbufflenth data 8 ;
dspbuffxlenth data 4 ;
dspbuffylenth data 4 ;
decbufflenth data 4 ;
hexbufflenth data 4 ;
;--------------------------------------------------------------
;//define the display data symbol for the purpose of reading.
;**************************************************************
; MAIN PROGRAM
; (General board for the Optical Sensor and SCARA)
;**************************************************************
org 0
sjmp main ;main procedure entry.
; org 0003h ;int0 entrance.
; org 000bh
; ajmp motor_t ;t0 int_procedure entry.
; org 0013h
; ajmp menu ;int1 int_procedure entry.
; org 001bh ;t1 entrance.
; ljmp intc
; org 0023h ;serial entrance.
; ajmp intc
;==================================================================
;name: main procedure
;number:
;used resoures:
;algorithm:
;------------------------------------------------------------------
org 30h
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 bmqdata0, #0ffh
mov bmqdata1, #0ffh
mov bmqdata2, #1
lcall decoder
jjjj: nop
sjmp jjjj
;--------------------------------------------------------------------
decoder: mov r3, #8
bms: clr c
mov a, bmqdata0 ;將采集的數據左移一位
rlc a
mov bmqdata0, a
mov a, bmbcd0
addc a, bmbcd0
da a
mov bmbcd0, a
mov a, bmbcd1
addc a, bmbcd1
da a
mov bmbcd1, a
djnz r3, bms
mov a, bmqdata1
jz bmsjcl_2
bmsjcl_1: clr c
mov a, bmbcd0
add a, #56h
da a
mov bmbcd0, a
mov a, bmbcd1
addc a, #2h
da a
mov bmbcd1, a
clr a
addc a, bmbcd2
da a
mov bmbcd2, a
djnz bmqdata1, bmsjcl_1
bmsjcl_2: mov a, bmqdata2
jz sjcl_end
loop4: clr c
mov a, bmbcd0
add a, #36h
da a
mov bmbcd0, a
mov a, bmbcd1
addc a, #55h
da a
mov bmbcd1, a
mov a, bmbcd2
addc a, #6h
da a
mov bmbcd2, a
clr a
addc a, bmbcd3
da a
mov bmbcd3, a
djnz bmqdata2,loop4
sjcl_end: ret
end
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -