欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3806|回復: 6
打印 上一主題 下一主題
收起左側(cè)

這個單片機匯編程序怎么改成共陰極的呀?

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:827883 發(fā)表于 2020-11-8 13:28 | 只看該作者 回帖獎勵 |正序瀏覽 |閱讀模式
;****************************************************************
;項目名稱: 數(shù)字式秒表設計;功能要求:數(shù)字式秒表上電或按鍵復位后能自動顯示系統(tǒng)提示符“P.”,進入準備工作狀態(tài)。該數(shù)字式秒表應具有開始、暫停、連續(xù)、清零和停止功能。
;****************************************************************
;堆棧棧底2FH;
;****************************************************************
;LED數(shù)碼管顯示器設定;
;P0.7---P0.0段控線,接LED的顯示段dp,g,f,e,d,c,b,a
;P2.0---P2.7位控線,從左至右 (LED7,LED6,LED5,LED4,LED3,LED2,LED1,LED0)
;顯示緩沖區(qū)設定從左至右依次為78H,79H,7AH,7BH,7CH,7DH,7EH,7FH
;****************************************************************
;獨立式鍵盤設定;
;8個按鍵S2至S9分別依次接在P1.0至P1.7口線;
;****************************************************************
;獨立式鍵盤設定與功能;
;8個按鍵S1至S8分別依次接在P1.0至P1.7口線;
;S1的功能為復位
;S2的功能為啟動/停止(標識符為22H.0當它為1時啟動,為0時停止)
;S3的功能為暫停/繼續(xù)(標識符為22H.1當它為1時暫停,為0時繼續(xù))
;S4的功能為清零
;****************************************************************
;定時器/計數(shù)器資源:
;T/C0:工作模式1;功能;定時時間;查詢或中斷
;****************************************************************
;中斷系統(tǒng)資源;
;T/C0
;****************************************************************
;鍵功能程序;
;K1  (S2鍵鍵功能程序)
;K2  (S3鍵鍵功能程序)
;K3  (S4鍵鍵功能程序)
;********************************************************
;中斷服務程序
;********************************************************
;常數(shù)表格;
;DISBH(系統(tǒng)提示符P.字型代碼序號表)
;DISBI(00-00-00字符的代碼序號)
;TAB  (共陽數(shù)碼管字型代碼表)
;********************************************************
;子程序;
;DL                (1毫秒延時子程序)
;DISP           (數(shù)碼管顯示子程序)
;KEY                  (鍵掃描子程序);
;KEYCL    (P1口數(shù)據(jù)處理子程序)
;ADD01    (加1子程序)
;*********************************************************   
                        ORG                0000H
START:         LJMP          MAIN
                      ORG           000BH
                      LJMP          ZHD
                           ORG           0030H
MAIN:          MOV           PSW,                 #00H
                      MOV           SP,                 #2FH                    ;確立堆棧區(qū)
                           MOV           R0,                 #20H                    ;RAM區(qū)首地址
                               MOV              R7,            #96                        ;RAM區(qū)單元個數(shù)
                              MOV              TMOD,                #01H
                                   SETB                  EA
                                   SETB                  ET0
ML:            MOV                   @R0,                 #00H
                       INC                   R0
                                   DJNZ                  R7,                 ML
TSF:           MOV                   DPTR,                #DISBH   ;系統(tǒng)初始化后提示符“P.”字符代碼表首地址
                              MOV                   R5,                 #08H
                                   MOV                   R0,                 #78H
DISPTSF:                CLR                   A
                       MOVC                  A,                         @A+DPTR
                                MOV                   @R0,                 A
                                INC                   R0
                                INC                   DPTR
                        DJNZ                  R5,                 DISPTSF
KEY0:                   LCALL                 DISP
                        LCALL                 KEY
                                JB                    20H.0,         K1
                                JB                    20H.1,         K2
                                JB                    20H.2,                 K3
                                LJMP                  KEY0
KEY00:                  LCALL                 KEY
                        LCALL                 DISP
                                JB                    20H.2,         K3
                                LJMP                  KEY00
K1:                     JB                    22H.1,         KEY0
                                CPL                   22H.0
                        JB                    22H.0,         01      ;高電平則計時
                                CLR                  TR0                         ;低電平則停止
                                LCALL                 DISP
                                LJMP                 KEY00
K01:                    MOV                   7AH,                 #12H        ;從零開始計時
                        MOV                   7DH,                #12H
                                MOV                   7FH,                 #10H
                                MOV                   79H,                 #00H
                                MOV                   7BH,                 #00H
                                MOV                   7CH,                 #00H
                                MOV                   7EH,                 #00H
                        MOV                   7FH,                 #00H
                                LCALL                 DISP
                                MOV                   TH0,                 #0D8H
                                MOV                   TL0,                 #0F0H
                        SETB                  TR0                                     ;啟動定時器
                                LJMP                  KEY0
K2:                     JB                    22H.0,         K21                    ;判斷秒表是否啟動,如不是啟動狀態(tài)則此次按鍵無效
                        LJMP                 KEY0
K21:                    CPL                   22H.1
                       JB                    22H.1,         K22
                                SETB                  TR0                                    ;繼續(xù)計時
                                LJMP                  KEY0
K22:                    CLR                   TR0                                   ;暫停秒表
                                LCALL                 DISP                  
                                LJMP                  KEY0
K3:                     JB                    22H.0,         KEY0                     ;只有當停止是,清零鍵才有效
                                MOV                   R0,                 #79H                ;秒表清零
                                LCALL                 CLR0        
                                MOV                   R0,                 #7CH
                                LCALL                 CLR0        
                                MOV                   R0,            #7FH
                                LCALL                 CLR0        
                                LJMP                  KEY0
ZHD:                   PUSH                  PSW
                        PUSH                  ACC
                                MOV                   TMOD,                #01H                    ;定時器以工作方式1工作
                                SETB                  RS1                                           ;設定組號為2組
                                CLR                  RS0
                                MOV                   TH0,                 #0D8H
                                MOV                   TL0,                 #0F0H
                                MOV                   R0,                 #79H
                                LCALL                 ADD01
                                CJNE                  R2,                 #99,        RETT   ;判斷100毫秒到?jīng)]
                                MOV                   R0,                 #7CH
                                LCALL                 ADD01
                           CJNE                  R2,                        #60,         RETT    ;判斷60秒到?jīng)]
                                LCALL                 CLR0
                                MOV                   R0,                 #7FH
                                LCALL                 ADD01
                                CJNE                  R2,                         #60,        RETT    ;判斷60分到?jīng)]
                                LCALL                 CLR0
RETT:                   POP                   ACC
                        POP                   PSW
                                RETI
;*******************************************************
;常數(shù)表格區(qū)
;系統(tǒng)初始化后提示符“P.”字符代碼表;
DISBH:  DB 10H,10H,10H,10H,10H,10H,10H,11H;提示符“P.”字符序號顯示字符段選碼表(共陽極代碼)
TAB:    DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H;0-8
        DB 90H,88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,0BFH
;9,A,B,C,D,E,F,滅,p.,-
;*******************************************************
;子程序區(qū);
ADD01:                MOV                   A,                 @R0
               DEC                   R0
                           SWAP                 A
                           ORL                   A,                 @R0
                           ADD                   A,                #01H
                           DA                    A
                           MOV                   R2,         A
                           ANL                   A,                 #0FH
                           MOV                   @R0,         A
                           MOV                   A,                 R2
                           ANL                   A,                 #0F0H
                           SWAP                  A
                           INC                   R0
                          MOV                   @R0,         A
                           RET
CLR0 :         MOV                   @R0,        #00H
                           DEC                   R0
                           MOV                   @R0,         #00H
                           RET
;鍵掃描子程序
KEY:           LCALL          KEYCL              ;調(diào)P1口數(shù)據(jù)處理子程序
               JZ             EXIT               ;沒有鍵按下,轉(zhuǎn)返回
                          LCALL          DISP               ;調(diào)顯示子程序去抖動
                          LCALL          DISP
                           LCALL          KEYCL                      ;調(diào)P1口數(shù)據(jù)處理子程序
                           JZ             EXIT                ;沒有鍵按下,轉(zhuǎn)返回
                           MOV            B,                 20H     ;保存取反后的鍵值
KEYSF:         LCALL          KEYCL          ;調(diào)P1口數(shù)據(jù)處理子程序
               JZ             KEY1                ;鍵釋放,轉(zhuǎn)恢復鍵值
                           LCALL          DISP
                           LCALL          DISP                ;調(diào)顯示子程序延時
                           LJMP           KEYSF                       ;等待釋放
KEY1:          MOV            20H,                 B    ;鍵值送20H保存
EXIT:          RET
;子程序返回
;P1口數(shù)據(jù)處理子程序
KEYCL:   PUSH                 PSW                 ;保護現(xiàn)場
         CLR                  RS1                 ;改變當前寄存器組為組1
                  SETB                 RS0
                  MOV                          P1,         #0FFH   ;先向P1口寫1
                  MOV                  A,                 P1      ;讀P1口數(shù)據(jù)
                  CPL                  A                   ;P1口數(shù)據(jù)取反
                  MOV                  20H,         A       ;保存取反后的鍵值
                  CLR                    RS1                 ;恢復當前寄存器組為組0
                  CLR                  RS0
                  POP                  PSW                 ;恢復現(xiàn)場
                  RET                                      ;子程序返回
;顯示子程序
;入口: 78H,79H,7AH,7BH,7CH,7DH,7EH,7FH,
DISP:   PUSH             DPH                     ;保護現(xiàn)場
         PUSH                  DPL
                  PUSH                 ACC
                  PUSH                 PSW
                  CLR                  RS1           ;改變當前寄存器組為組1
                  SETB         RS0
                  MOV          R1,         #78H            ;顯示緩沖存儲單元首地址
                  MOV                 R2,         #01H            ;從右至左顯示
  MOV             R5,         #08H            ;循環(huán)次數(shù),即驅(qū)動數(shù)碼管的位數(shù)
DISP1:          MOV          A,                 @R1
                  MOV          DPTR,         #TAB
                  MOVC                A,                 @A+DPTR
                  MOV          P0,         A          ;送段控
                  MOV          P2,         R2         ;送位控
                  LCALL         DL                           ;延時1毫秒
                  MOV          A,                 R2         ;位控碼送A
                  RL           A                             ;獲得新的位控碼
                  MOV          R2,         A          ;保存新的位控碼
                  INC          R1                           ;獲得新的顯示緩沖單元地址
                  DJNZ         R5,         DISP1      ;循環(huán)沒有結(jié)束則繼續(xù)
DISP2:   POP          PSW                                           ;恢復現(xiàn)場
                  POP                 ACC              
                  POP          DPL
                  POP          DPH
                  RET
;延時1ms子程序(晶振頻率12MHz)DL
DL:     MOV                  R7,                #01H
DL1:    MOV                  R6,                #8EH
DL0:    MOV                  R5,                #02H
        DJNZ                 R5,                $
        DJNZ                 R6,                DL0
        DJNZ                 R7,                DL1
        RET
                END

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

7#
ID:235200 發(fā)表于 2020-11-9 01:04 | 只看該作者
                 MOV          R1,         #78H            ;顯示緩沖存儲單元首地址
                  MOV                 R2,         #0FEH     ;此句修改 #01H            ;從右至左顯示
  MOV             R5,         #08H            ;循環(huán)次數(shù),即驅(qū)動數(shù)碼管的位數(shù)
DISP1:          MOV          A,                 @R1
                  MOV          DPTR,         #TAB
                  MOVC                A,                 @A+DPTR
                  CPL           A         ;加這一條
                  MOV          P0,         A          ;送段控
                  MOV          P2,         R2         ;送位控
                  LCALL         DL                           ;延時1毫秒
                  MOV          A,                 R2         ;位控碼送A
                  RL           A                             ;獲得新的位控碼
                  MOV          R2,         A          ;保存新的位控碼
                  INC          R1                           ;獲得新的顯示緩沖單元地址
                  DJNZ         R5,         DISP1      ;循環(huán)沒有結(jié)束則繼續(xù)

按以上方式改2行就可以了
回復

使用道具 舉報

6#
ID:414556 發(fā)表于 2020-11-8 23:03 | 只看該作者
共陰可以把共陽的碼段取反,前提是硬件對應的腳一致
回復

使用道具 舉報

5#
ID:827883 發(fā)表于 2020-11-8 22:09 | 只看該作者
wc86110 發(fā)表于 2020-11-8 15:53
改段碼或用反相器都可以

共陰極的段碼是什么呀,網(wǎng)上沒找到,這個程序有什么問題嗎
回復

使用道具 舉報

地板
ID:68468 發(fā)表于 2020-11-8 20:01 | 只看該作者
佩服佩服,還用匯編寫單片機程序。
段碼求反就行。
回復

使用道具 舉報

板凳
ID:96682 發(fā)表于 2020-11-8 15:53 來自觸屏版 | 只看該作者
改段碼或用反相器都可以
回復

使用道具 舉報

沙發(fā)
ID:96682 發(fā)表于 2020-11-8 15:48 來自觸屏版 | 只看該作者
改段碼或用反
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表