當前位置:編程學習大全網 - 編程語言 - 求此匯編程序的註釋

求此匯編程序的註釋

CH EQU 30H;定義CH為30H

DPCNT EQU 31H;定義DPCNT為31H(31H單元用於存放數在數據表DPCD中的偏移地址的基礎量)

DPBUF EQU 33H;定義DPBUF為33H

GDATA EQU 32H;定義GDATA為32H(32H單元用於存放讀入轉換的數據量)

ST BIT P3.0;定義ST為P3.0位

OE BIT P3.1;定義OE為P3.1位

EOC BIT P3.2;定義EOC為P3.2位

ORG 00H;將後面的程序匯編後存入ROA的0000H以後單元

LJMP START;程序入口,轉開始START

ORG 0BH;將後面的程序匯編後存入ROA的000BH以後單元

LJMP T0X;中斷入口,轉中斷T0X

ORG 30H;將後面的程序匯編後存入ROA的0030H以後單元

START: MOV CH,#0BCH;將數據0BCH送入30H單元

MOV DPCNT,#00H;清零31H單元

MOV R1,#DPCNT;將數據31H送入R1(作為工作單元計數初值)

MOV R7,#5;將數據5送入R7(作為循環計數初值)

MOV A,#10;將數據10送入A

MOV R0,#DPBUF;將數據33H送入R0

LOP: MOV @R0,A;

INC R0

DJNZ R7,LOP;將33H--37H單元置初值10

MOV @R0,#00H

INC R0

MOV @R0,#00H

INC R0

MOV @R0,#00H;將38H--3AH單元置初值0

MOV TMOD,#01H;設置T0方式1工作

MOV TH0,#(65536-4000)/256

MOV TL0,#(65536-4000) MOD 256;設置T0的計數初值

SETB TR0;啟動T0計數

SETB ET0;允許T0溢出中斷

SETB EA;開中斷

WT: CLR ST;清P3.0位

SETB ST;置位P3.0位

CLR ST;清P3.0位(產生啟動轉換脈沖)

WAIT: JNB EOC,WAIT;P3.2為0則等待(A/D轉換未完則等待)

SETB OE;A/D轉換完則置位P3.1位

MOV GDATA,P0;讀取轉換的數字量到32H單元

CLR OE;清P3.1位

MOV A,GDATA

MOV B,#100

DIV AB;數字量除100,商在A中(即百位數),余數在B中

MOV 33H,A;百位數存入33H單元

MOV A,B

MOV B,#10

DIV AB;第壹次余數再除10,商在A中(即十位數),余數在B中(即個位數)

MOV 34H,A;十位數存入34H單元

MOV 35H,B;個位數存入35H單元

SJMP WT;轉WT處

T0X: NOP;中斷程序

MOV TH0,#(65536-4000)/256

MOV TL0,#(65536-4000) MOD 256;設置T0的計數初值

MOV DPTR,#DPCD;取數據表DPCD的首地址

MOV A,DPCNT;將31H單元內容送入A

ADD A,#DPBUF;加上數的百位

MOV R0,A

MOV A,@R0;產生數據表DPCD中的偏移地址

MOVC A,@A+DPTR;讀取顯示代碼

MOV P1,A;輸出顯示代碼

MOV DPTR,#DPBT;取數據表DPBT的首地址

MOV A,DPCNT;將31H單元內容送入A

MOVC A,@A+DPTR;讀取顯示數碼管地址

MOV P2,A;輸出顯示數碼管地址

INC DPCNT;31H單元內容加1(準備下壹個數據輸出)

MOV A,DPCNT;

CJNE A,#8,NEXT;8個數碼管的顯示數據沒有都輸出則轉NEXT

MOV DPCNT,#00H;8個數碼管的顯示數據都輸出了則清31H單元

NEXT: RETI;中斷返回

DPCD: DB 3FH,06H,5BH,4FH,66H

DB 6DH,7DH,07H,7FH,6FH,00H

DPBT: DB 0FEH,0FDH,0FBH,0F7H

DB 0EFH,0DFH,0BFH,07FH

END

  • 上一篇:有關計算機的壹些基本概念
  • 下一篇:100個微習慣清單
  • copyright 2024編程學習大全網