彙編車票沒有查詢

2023-02-14 18:54:02 字數 7708 閱讀 6635

;功能描述: 微控制器和pc機之間的訪問和資訊的傳遞

;其他說明:

res equ p0.4設定連線方式

a0 equ p0.5

rw equ p0.6

e equ p0.7

lcd_x equ 30h畫圖座標設定

lcd_y equ 31h

count equ 32h

count1 equ 33h

count2 equ 34h

count3 equ 35h

org 0000h

ajmp main

org 0023h

ajmp jieshou

org 0070h

main:

mov scon,#50h ;串列埠初始化

mov tmod,#20h ;

mov th1,0f3h

mov tl1,0f3

mov pcon,#00h ;設定波特率

setb tr1

setb es開放序列中斷

setb ea開放總中斷

mov a,02h 序列口輸入輸出準備

mov p3,a

xunwen:

mov r6,#03h 傳送3次"?"號,即3次3fh

xunwen3:

mov a,#3fh

mov sbuf,a

jnb p3.1,$

clr p3.1

jbc p3.0,yingda

djnz r6,xunwen3 3次完了嗎?完了輸出:請檢查訊號線!

acall jiancha

acall han_wr

nopnop

nopajmp xunwen3

yingda應答訊號

mov a,sbuf應答訊號是"!"嗎?

cjne a,#21h ,bushi

acall huanying

kais:

mov a,#24h

mov sbuf,a傳送請求初始接受資訊

jnb p3.1

clr p3.1

jbc p3.0,chushi準備接受初始資訊

nopnop

nopajmp kais

接收開始,先設計出8*16個矩陣空間

chushi

mov dptr,#1500h 置資料區首址

mov r0,#08h置接收位元組數初值

jixu: mov a,sbuf接收(讀入)資料

mov @dptr,a存放接收資料

inc dptr修改資料區指震

djnz r0, jixu資料塊還沒有接收完,繼續接收

nopnop

nop3個空操作

chushi2:

acall han_wr接收完了,顯示接收資訊

key掃瞄鍵盤,有按鍵嗎 ?沒有繼續顯示功能

mov p1,#0f0h令所有行為低電平,全掃瞄p1.0-p1.3, 列為輸入方式

lcall delay4

key1:

mov a,p1讀取p1口列值

anl a,#0f0h叛別有按鍵按下嗎?

cpl a求反後,有高電平就有鍵按下

jz chushi2無鍵按下時退到顯示功能介面

lcall t10ms延時去抖動

skey:

mov a,#00下面進行行掃瞄,1行1行掃

mov r0,ar0為行計數器,開始為0

mov r1,ar1為列計數器,開始為0

mov r3,#0fehr3 為行掃瞄暫存,低4位為行掃瞄

字skey2:

mov a,r3mov p1,a輸出行掃瞄字,高4位全1

nopnopnop3個nop操作,使輸出穩定

mov a ,p1讀列值

mov r1,a暫存列值

anl a,#0f0h取列值

cpl a高電平則有鍵閉合

s123:

jnz skey3有鍵按下轉skey3,無鍵按下時進行一行掃瞄

inc r0行計數器加1

setb c準備將行掃瞄左移1位,形成下一行掃瞄字

; c=1保證輸出行掃瞄字中高4位全為1,為列輸入作準備

; 低4位中只有1位為0

mov a,r3r3帶進製c左移1位

rlc amov r3,a形成下一行掃瞄字

mov a,r0cjne a,#04h,skey1 最後一行掃(4次)完了嗎?

ret列號解碼

skey3mov a,r1jnb acc.4,skey5jnb acc.5,skey6jnb acc.

6,skey7jnb acc.7,skey8retskey5mov a,#00hmov r2,a存0列號

ajmp dekyskey6mov a,#01hmov r2,a存1號

ajmp dkeyskey7mov a,#02h存2號

mov r2,aajmp dkeyskey8mov a,#03hmov r2,a存3號

ajmp dkey鍵位置解碼

dkeymov a,r0取行號

acall decoderet鍵值解碼

decode:

mov a,r0取行號送a

mov b,#04h每一行按鍵個數

mul ab行號*按鍵數

add a,r2行號*按鍵數+列號=鍵值,在a中

ret有按鍵? 則呼叫鍵碼功能表start :

mov r7,a暫存鍵碼

mov a,#0ffhmov p1,a關閉p1口

mov a,r7取出鍵碼

pl:jnb acc.0,anjian1

jnb acc.1,anjian2

jnb acc.2,anjian3

jnb acc.3,anjian4

jnb acc.4,anjian5

jnb acc.5,anjian6

jnb acc.6,anjian7

jnb acc.7,anjian8

nopnop

nopljmp start

nopnop

nopanjian1:

mov dptr,#1500h

mov a,@dptr傳送按鍵1請求

call

l fasljmp startanjian2:

mov dptr,#1501h

mov a,@dptr傳送按鍵2請求

call fas

ljmp startanjian3:

mov dptr,#1502h

mov a,@dptr傳送按鍵3請求

call fas

ljmp startanjian4:

mov dptr,#1503h

mov a,@dptr傳送按鍵4請求

call fas

ljmp startanjian5:

mov dptr,#1504h

mov a,@dptr傳送按鍵5請求

call fas

ljmp startanjian6:

mov dptr,#1505h

mov a,@dptr傳送按鍵6請求

call fas

ljmp startanjian7:

mov dptr,#1506h

mov a,@dptr傳送按鍵7請求

call fas

ljmp startanjian8:

mov dptr,#1507h

mov a,@dptr傳送按鍵8請求

call fasljmp startfas: mov sbuf,ajnb p3.1clr p3.1ret

jbc p3.0, jieshou等待序列中斷

nopnop

nopmov r7,#0ah

djnz r7,fas

lcall clear_p

mov dptr,#tab3

lcall han

ljmp fas

nopnop

nop串列埠中斷接收

jieshou:

mov a,sbuf接收(讀入)資料

mov dptr,#1500h 置資料區首址

mov r0,#08h置接收位元組數初值

mov @dptr,a存放接收資料

inc dptr修改資料區指震

djnz r0, cxz

clr p3.0

nopnop

noplcall clear_p接收完了,顯示結果

mov dptr,#1500h

lcall han

call delay3

nopnop

nopljmp kais

nopnop

nopend查詢中cxz :

lcall clear_p

mov dptr,#tab4

lcall han

nopnop

nopljmp jieshou歡迎顯示

huanying:

acall han_wr2acall han_wr3ret不是? 處理

bushi:

ajmp xunwen3檢查顯示

jiancha:

mov a,#0e2h

mov p2,a 復位

setb res ;

clr wr

clr a0

lcall delay3

nopnop

nop液晶面板初始化lgs0:

mov a,#0afh ;0afh--基本指令操作

lcall send_i

mov a,#01h ;清除顯示

lcall send_i

mov a,#0a2h ;指定在資料寫入或讀取時,游標的移動方向

lcall send_i ;ddram 的位址計數器(ac)加1

mov a,#0a5h ;開顯示,關游標,不閃爍

lcall send_i

nopnop

ret顯示漢字和字元

;加入160ms的延時,使你能夠看清楚顯示的過程

;根據漢字顯示座標分段寫入

(順序寫入han_wr:

lcall clear_p

han_wra:

mov dptr,#tab1 ;顯示漢字和字元

mov count,#10h ;位址計數器設為16。

mov a,#80h ;第一行起始位址

lcall send_i

lcall qushu

lcall delay4

lcall clear_p

rethan_wr2:

lcall clear_p

han_wr2a:

mov dptr,#tab2a ;顯示漢字和字元

han: mov count,#10h ;位址計數器設為16。

mov a,#80h ;第一行起始位址

lcall send_i

lcall qushu

han_wr2b:

mov dptr,#tab2b ;顯示漢字和字元

mov count,#10h ;位址計數器設為16。

mov a,#90h ;第二行起始位址

lcall send_i

lcall qushu

han_wr2c:

mov dptr,#tab2c ;顯示漢字和字元

mov count,#10h ;位址計數器設為16。

mov a,#88h ;第三行起始位址

lcall send_i

lcall qushu

han_wr2d:

mov dptr,#tab2d ;顯示漢字和字元

mov count,#10h ;位址計數器設為16。

mov a,#98h ;第四行起始位址

lcall send_i

lcall qushu

lcall delay4

nopnop

noplcall clear_p

rethan_wr2e:

lcall clear_p

mov dptr,#tab1 ;顯示漢字和字元

mov count,#10h ;位址計數器設為16。

mov a,#80h ;第一行起始位址

lcall send_i

lcall qushu

lcall delay4

lcall clear_p

retnop

nopnop清屏clear_p:

mov a,#01h ;清屏

lcall send_i

mov a,#34h

lcall send_i

mov a,#30h

lcall send_i

retnop

nopnop延時子程式

delay3:

mov r5,#16h

del31: mov r6,#100h

del32: mov r7,#0ffh

del33: djnz r7,del33

djnz r6,del32

djnz r5,del31

retdelay4:

mov r6,#100h

del41: mov r7,#200h

del42: djnz r7,del42

djnz r6,del41

rett10ms:

mov r7,#10h

t1: mov r6,#0ffh

t2: djnz r6,t2

djnz r7,t1

ret寫指令子程式

;rs=0,rw=0,e=高脈衝,d0-d7=指令碼send_i:

lcall chk_busy

setb res

clr rw

clr a0

mov p2,a

setb e

nopnop

clr e

retnop

nopnop測忙碌子程式

;a0=0,res=0,rw=1,e=h,d0-d7=狀態字chk_busy:

mov p2,#0ffh ;測忙碌子程式

clr a0

clr res

setb rw

setb e

jb p2.7,$

clr e

ret顯示漢字和字元

;加入160ms的延時,使你能夠看清楚顯示的過程

;根據漢字顯示座標分段寫入(順序寫入

查表取資料送顯示qushu:

clr a

movc a,@a+dptr ;查表取資料

lcall send_d ;送顯示

inc dptr

lcall delay4

djnz count,qushu

ret寫資料子程式

;a0=1,res=0,rw=0,e=高脈衝,d0-d7=資料send_d:

lcall chk_busy ;寫資料子程式

setb a0

clr res

clr rw

mov p0,a

setb e

nopnop

nopclr eret

第五章彙編檔案文獻的查選三改稿

第一節彙編檔案文獻的查詢 一 檔案文獻查詢的意義和原則 二 查詢檔案文獻策略 三 查詢檔案文獻的方法 四 查詢檔案文獻的組織分工 第二節選材的意義和原則 一 選材工作的實質 二 選材的意義 三 選材的原則 第三節選材的基本要求 一 去偽存真,選擇真實可靠的材料 二 透過現象看到本質,選擇能說明問題本...