📄 mpu.asm
字号:
;====================================================================
;Procedure name: quick.asm
;The date of development: 1999.04
;Crystal Oscillator: 11.0592MHz
;Microcontroller: AT89C51 (Producted by ATEMEL Corporation)
;Developing devices: Personal Computer(486DX);EMP-100A;Avsim51
;Author: Lixiufeng
;====================================================================
;----------------------------------------------------------------
;//define all the pins of the Micocontrollor(AT89C51)
res4 bit p0.0 ;"res1-res4"reserving for the
res3 bit p0.1 ; future.
res2 bit p0.2
res1 bit p0.3
ldat bit p0.4 ;display shifting data pin.
lclk bit p0.5 ;display shifting clock pin.
dtr bit p0.6 ;RS232C data terminal ready(DTR).
dsr bit p0.7 ;RS232C data set ready(DSR).
ad7 bit p1.0 ;"ad0-ad7":the A/D convertor data
ad6 bit p1.1 ; port.
ad5 bit p1.2
ad4 bit p1.3
ad3 bit p1.4
ad2 bit p1.5
ad1 bit p1.6
ad0 bit p1.7
kclk bit p2.0 ;key board shifting clock pin.
col1 bit p2.1 ;the first colum key pin.
col2 bit p2.2 ;the second colum key pin.
kdat bit p2.3 ;key board shifting data pin.
scl bit p2.4 ;SEEROM R/D clock pin.
sda bit p2.5 ;SEEROM R/D data pin.
adrc bit p2.6 ;(AD574A)start A/D to convert.
ada0 bit p2.7 ;two byte data output control pin.
;rxd bit p3.0 ;RS232C receiving data pin.
;txd bit p3.1 ;RS232C transmiting data pin.
adst bit p3.2 ;AD574A statue pin.
keyi bit p3.3 ;key board interrupt input pin.
sspd_cp bit p3.4 ;SSPD external clock output pin.
sspd_st bit p3.5 ;SSPD external start output pin.
sspd_eos bit p3.6 ;SSPD external end input pin.
sspd_rst bit p3.7 ;the reset pin of S/H.
;--------------------------------------------------------------------
;//define the flag
keybuffl equ 20h ;key board flag(l).
keybuffh equ 21h ;key board flag(h).
s0 bit 00h ;"0" key flag.
s1 bit 01h ;"1" key flag.
s2 bit 02h ;"2" key flag.
s3 bit 03h ;"3" key flag.
s4 bit 04h ;"4" key flag.
s5 bit 05h ;"5" key flag.
s6 bit 06h ;"6" key flag.
s7 bit 07h ;"7" key flag.
s8 bit 08h ;"8" key flag.
s9 bit 09h ;"9" key flag.
s10 bit 0ah ;"A" key flag.
s11 bit 0bh ;"B" key flag.
s12 bit 0ch ;"C" key flag.
s13 bit 0dh ;"D" key flag.
s14 bit 0eh ;"E" key flag.
s15 bit 0fh ;"F" key flag.
firstflag equ 22h ;the first menu flag register.
fst_aflag bit 10h ;"A":s10 first pressed flag.
fst_bflag bit 11h ;"B":s11 first pressed flag.
fst_cflag bit 12h ;"C":s12 first pressed flag.
fst_dflag bit 13h ;"D":s13 first pressed flag.
fst_eflag bit 14h ;"E":s14 first pressed flag.
fst_fflag bit 15h ;"F":s15 first pressed flag.
; bit 16h ;
; bit 17h ;
secondflag equ 23h ;the second menu flag register.
sec_aflag bit 18h ;"A":s10 second pressed flag.
sec_bflag bit 19h ;"B":s11 second pressed flag.
sec_cflag bit 1ah ;"C":s12 second pressed flag.
sec_dflag bit 1bh ;"D":s13 second pressed flag.
sec_eflag bit 1ch ;"E":s14 second pressed flag.
sec_fflag bit 1dh ;"F":s15 second pressed flag.
; bit 1eh ;
; bit 1fh ;
flag1 equ 24h ;the first status flag register.
keyflag bit 20h ;keyflag=1 imply that a key is pressed.
dsppointflag bit 21h ;decimal point displaying flag.
dsp_xflag bit 22h ;deal with X coordinate displaying flag.
dsp_yflag bit 23h ;deal with Y coordinate displaying flag.
ledflag bit 24h ;display changed flag.
sspd_adsmpl bit 25h ;
serial_flag bit 26h ;RS-232C in action.
; bit 27h ;
flag2 equ 26h ;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.
; bit 30h ;
; bit 31h ;
; bit 32h ;
; bit 33h ;
; bit 34h ;
; bit 35h ;
; bit 36h ;
; bit 37h ;
flag4 equ 27h ;the fourth status flag register.
; bit 38h ;
; bit 30h ;
; bit 3ah ;
; bit 3bh ;
; bit 3ch ;
; bit 3dh ;
; bit 3eh ;
; bit 3fh ;
sspdcp_count equ 28h ;sspd clock counter.
sspdcp_countb bit 40h
keyvalue equ 29h ;
ecount_menu equ 2ah ;
rscbufft equ 2bh ;
rscbuffr equ 2ch ;
sspdcpbuffl equ 2dh ;
sspdcpbuffh equ 2eh ;
; equ 2fh ;
;-----------------------------------------------------------------
;//define the RAM region
dspbuffy0 equ 30h ;Y coordinate buffer of the shifting
dspbuffy1 equ 31h ; data.
dspbuffy2 equ 32h
dspbuffy3 equ 33h
dspbuffx0 equ 34h ;X coordinate buffer of the shifting
dspbuffx1 equ 35h ; data.
dspbuffx2 equ 36h
dspbuffx3 equ 37h
dec_l equ 38h ;buffer(l) of the decimal data.
dec_h equ 39h ;buffer(h) of the decimal data.
hex_l equ 3ah ;buffer(l) of the hex data.
hex_h equ 3bh ;buffer(h) of the hex data.
dsp_xl equ 3ch ;X(hex) coordinate input buffer(l).
dsp_xh equ 3dh ;X(hex) coordinate input buffer(h).
dsp_yl equ 3eh ;Y(hex) coordinate input buffer(l).
dsp_yh equ 3fh ;Y(hex) coordinate input buffer(h).
sspd_adbuff11l equ 40h ;
sspd_adbuff11h equ 41h ;
sspd_adbuff12l equ 42h ;
sspd_adbuff12h equ 43h ;
sspd_adbuff13l equ 44h ;
sspd_adbuff13h equ 45h ;
sspd_adbuff21l equ 46h ;
sspd_adbuff21h equ 47h ;
sspd_adbuff22l equ 48h ;
sspd_adbuff22h equ 49h ;
sspd_adbuff23l equ 4ah ;
sspd_adbuff23h equ 4bh ;
sspd_adbuff31l equ 4ch ;
sspd_adbuff31h equ 4dh ;
sspd_adbuff32l equ 4eh ;
sspd_adbuff32h equ 4fh ;
sspd_adbuff33l equ 50h ;
sspd_adbuff33h equ 51h ;
time1 equ 52h ;
time2 equ 53h ;
time3 equ 54h ;
adbuffl equ 55h ;
adbuffh equ 56h ;
sspddata1l equ 59h ;
sspddata1h equ 5ah ;
sspddata2l equ 5bh ;
sspddata2h equ 5ch ;
sspddata3l equ 5dh ;
sspddata3h equ 5eh ;
; equ 5fh ;
;--------------------------------------------------------------
;//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 ;
b_rate data 0fdh ;baud rate : 9600bps.
;--------------------------------------------------------------
;//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
_Hl data 16
_hs data 17
_i data 18
_J data 19
_L data 20
_n data 21
_o data 22
_P data 23
_q data 24
_Rl data 25
_rs data 26
_S data 27
_T data 28
_U data 29
_v data 30
_Y data 31
_0. data 32
_1. data 33
_2. data 34
_3. data 35
_4. data 36
_5. data 37
_6. data 38
_7. data 39
_8. data 40
_9. data 41
_A. data 42
_b. data 43
_c. data 44
_d. data 45
_E. data 46
_F. data 47
_Hl. data 48
_hs. data 49
_i. data 50
_J. data 51
_L. data 52
_n. data 53
_o. data 54
_P. data 55
_q. data 56
_Rl. data 57
_rs. data 58
_S. data 59
_T. data 60
_U. data 61
_v. data 62
_Y. data 63
;**************************************************************
; MAIN PROGRAM
; (General board for the Optical Sensor and SCARA)
;**************************************************************
org 0
sjmp main ;main procedure entry.
; org 0003h ;int0 entrance.
org 000bh
ajmp glisten0 ;t0 int_procedure entry.
; org 0013h
; ajmp menu ;int1 int_procedure entry.
; org 001bh ;t1 entrance.
org 0023h ;serial entrance.
ajmp serial
;==================================================================
;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 dspbuffy0,#_P. ;send "P." to Y coordinate.
mov dspbuffx0,#_P. ;send "P." to X coordinate.
lcall led
mov scon,#11010000b ;set serial communicating mode.
mov tmod,#00100001b ;set T1 mode for rs232c.
mov tl1,#b_rate ;baud rate:9600bps(0fdh).
mov th1,#b_rate
setb tr1 ;start timer1
mov sspdcpbuffl, #0fah
mov sspdcpbuffh, #0ffh
;//X coordinate display "P.",and also Y coordinate.
setb ea ;enable interrupt.
; setb et0
; setb tr0
setb it1 ;set the down edge valid.
setb es ;enable rs-232c interrupt
jnb ledflag,$ ;waiting for the display change.
clr ledflag
sjmp main
;******************************************************************
; Interrupt sub_procedure
;******************************************************************
;==================================================================
;name: glisten0(t0,sspd_cpflag=1)
;number:
;used resoures: external:T0,sspdcp_count,sspdcpbuffl/h,
; sspd_cp,sspd_st,sspd_eos,sspd_rst
; internal:A,dptr,psw.
;algorithm:
;note: In order to increase the SSPD clock frequency,the register
; "A","dptr","psw" that used in this procedure for internal
; use have not been protected. Before using this procedure,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -