找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索

單片機(jī)使用匯編語言和定時(shí)器動(dòng)態(tài)數(shù)碼管顯示00到99

查看數(shù): 1241 | 評(píng)論數(shù): 11 | 收藏 0
關(guān)燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請(qǐng)稍候......
發(fā)布時(shí)間: 2024-11-22 09:37

正文摘要:

要求是:采用匯編語言設(shè)計(jì)程序,用定時(shí)器中斷方式,循環(huán)顯示0-99。目前寫的,但是只有十位能正確顯示,后面都是亂碼,新手小白求助各位大佬(接線圖在下面) ORG  0000H LJMP MAIN ORG  000B ...

回復(fù)

ID:1135835 發(fā)表于 2024-11-28 23:33
55236 發(fā)表于 2024-11-24 17:05
A_Bit EQU 20H
B_Bit EQU  21h  ;十位數(shù)存放處
TEMP  EQU 22h

感謝感謝
ID:1135835 發(fā)表于 2024-11-28 23:33
55236 發(fā)表于 2024-11-24 17:18
A_Bit EQU 20H
B_Bit EQU  21h  ;十位數(shù)存放處
TEMP  EQU 22h

感謝感謝
ID:1135835 發(fā)表于 2024-11-28 23:33
lxm41577 發(fā)表于 2024-11-23 09:59
顯示部分改了下,看看能不能用

DIS:                             ;顯示程序

謝謝謝謝
ID:1135835 發(fā)表于 2024-11-28 23:33
188610329 發(fā)表于 2024-11-22 22:21
MOV  A, R2                 ;顯示十位
    MOVC A, @A+DPTR
    CLR  P1.0

感謝感謝,接線是老師規(guī)定好的
ID:1136459 發(fā)表于 2024-11-24 17:18
A_Bit EQU 20H
B_Bit EQU  21h  ;十位數(shù)存放處
TEMP  EQU 22h

STAR:  MOV  TEMP, #0 ;初始化計(jì)數(shù)器

STLOP:  
ACALL  DISPLAY
INC  TEMP
MOV  A,TEMP
CJNE  A,#100,NEXT ;=100重來
MOV  TEMP,#0

NEXT:
LJMP  STLOP

;顯示子程序
DISPLAY:
      MOV A, TEMP ;將temp中 的數(shù)轉(zhuǎn)換成10進(jìn)制
      MOV B,#10;
      DIV AB;
      MOV B_Bit,A ;十位在A
      MOV A_Bit,B;個(gè)位在B
      MOV DPTR,#TAB;指定查表啟始地址
      MOV R0,#2;4

DPL1:  MOV  R1,#100;250 ;顯示1000次
DPLOP: MOV A,A_Bit;取個(gè)位數(shù)
      MOVC A,@A+DPTR;查個(gè)位數(shù)的7段代碼
      ;CPL A;
      MOV  P1 ,A;送出個(gè)位的7段代碼
      CLR  P2.7;
      ACALL D1MS;延時(shí)顯示1ms
      SETB P2.7;
      MOV  A,B_Bit  ;取十位數(shù)
      MOVC A, @A+DPTR ;查十位數(shù)的7 段代碼
      ;CPL A;
      MOV  P1 ,A;送出十位的7段代碼
      CLR  P2.6;
      ACALL D1MS;
      SETB P2.6;
      DJNZ  R1,DPLOP  ;100次沒完循環(huán)
      DJNZ  R0,DPL1  ;2個(gè)100次沒完循環(huán)RET
      ;延時(shí)4毫秒即2微秒* R7*R6(按12MHZ算)


D1MS: MOV  R7 ,#5;10
      D1:  MOV  R6,#50;
           DJNZ R6,$;
           DJNZ R7,D1;
           RET;

;7段數(shù)碼管各劃的數(shù)字排列表,共陽的七段花數(shù)
TAB:
DB 3Fh,06h,5Bh,4Fh,66h,6Dh,7Dh,07h,7Fh,6Fh,77h,7Ch,39h,5Eh,79h,71h;
END;
ID:1136459 發(fā)表于 2024-11-24 17:05
A_Bit EQU 20H
B_Bit EQU  21h  ;十位數(shù)存放處
TEMP  EQU 22h

STAR:  MOV  TEMP, #0 ;初始化計(jì)數(shù)器

STLOP:  
ACALL  DISPLAY
INC  TEMP
MOV  A,TEMP
CJNE  A,#100,NEXT ;=100重來
MOV  TEMP,#0

NEXT:
LJMP  STLOP

;顯示子程序
DISPLAY:
      MOV A, TEMP ;將temp中 的數(shù)轉(zhuǎn)換成10進(jìn)制
      MOV B,#10;
      DIV AB;
      MOV B_Bit,A ;十位在A
      MOV A_Bit,B;個(gè)位在B
      MOV DPTR,#TAB;指定查表啟始地址
      MOV R0,#2;4

DPL1:  MOV  R1,#100;250 ;顯示1000次
DPLOP: MOV A,A_Bit;取個(gè)位數(shù)
      MOVC A,@A+DPTR;查個(gè)位數(shù)的7段代碼
      ;CPL A;
      MOV  P1 ,A;送出個(gè)位的7段代碼
      CLR  P2.7;
      ACALL D1MS;延時(shí)顯示1ms
      SETB P2.7;
      MOV  A,B_Bit  ;取十位數(shù)
      MOVC A, @A+DPTR ;查十位數(shù)的7 段代碼
      ;CPL A;
      MOV  P1 ,A;送出十位的7段代碼
      CLR  P2.6;
      ACALL D1MS;
      SETB P2.6;
      DJNZ  R1,DPLOP  ;100次沒完循環(huán)
      DJNZ  R0,DPL1  ;2個(gè)100次沒完循環(huán)RET
      ;延時(shí)4毫秒即2微秒* R7*R6(按12MHZ算)


D1MS: MOV  R7 ,#5;10
      D1:  MOV  R6,#50;
           DJNZ R6,$;
           DJNZ R7,D1;
           RET;

;7段數(shù)碼管各劃的數(shù)字排列表,共陽的七段花數(shù)
TAB:
DB 3Fh,06h,5Bh,4Fh,66h,6Dh,7Dh,07h,7Fh,6Fh,77h,7Ch,39h,5Eh,79h,71h;
END;就不知道對(duì)不對(duì),我們學(xué)校給的
ID:1072347 發(fā)表于 2024-11-24 16:13
5樓的似乎沒問題,你的原本的顯示部分寫的有點(diǎn)臃腫
ID:76044 發(fā)表于 2024-11-23 09:59
顯示部分改了下,看看能不能用

DIS:                             ;顯示程序
    MOV  A, R0                 ;取計(jì)數(shù)器R0的值

    MOV  B, #10                ;除以10,B寄存器為10
    DIV  AB                    ;A/B,商在A,余數(shù)在B
    MOVC A, @A+DPTR
    MOV  P1, A
    SETB P0.0                 ;十位的位選
    CALL DLY
    CLR  P0.0.

    MOV  A, B                 ;顯示個(gè)位
    MOVC A, @A+DPTR   
    MOV  P1, A
    SETB  P0.1                 ;個(gè)位的位選
    CALL DLY
    CLR  P0.1

    RET
ID:624769 發(fā)表于 2024-11-22 22:21
   MOV  A, R2                 ;顯示十位
    MOVC A, @A+DPTR
    CLR  P1.0
    MOV  P0, A
    SETB P0.0                 ;十位的位選
    CALL DLY

    MOV  A, R3                 ;顯示個(gè)位
    MOVC A, @A+DPTR
    CLR  P0.0
    MOV  P1, A
    SETB  P1.0                 ;個(gè)位的位選
    CALL DLY
    RET
你這板子什么情況? 個(gè)位,和十位 段選 用的不是 同一個(gè)總線? 那你 到了十萬位,百萬位,千萬位, 還要用 P5,P6, P7 ? 你單片機(jī)有那么多口子么?
ID:123917 發(fā)表于 2024-11-22 21:03
計(jì)數(shù)到100了,清零,返回主程序加LJMAP MAIN
ID:1109793 發(fā)表于 2024-11-22 15:18
這么復(fù)雜的板子,干嘛用匯編啊

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表