音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費(fèi)注冊 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

求助匯編程序

作者:wu1980 欄目:單片機(jī)
求助匯編程序
各位大俠:
    麻煩指點(diǎn)!
    小弟最近在用2051寫一個(gè)程序,功能如下:
     P1.0~~P1.6為段碼輸出,P3.0~P3.3為掃描輸出,四個(gè)數(shù)碼管輸出,最大計(jì)數(shù)為9999,P3.5,P3.7各控制一個(gè)繼電器,如果不要顯示,基本可寫成
START:SETB   P3.7
      LCALL  DL1S
      CLR    P3.7
       LCALL  DL1S
       SETB  P3.7
       LCALL  DL1S
       CLR   P3.7
       LCALL  DL1MIN
       SETB  P3.5
       LCALL   DL1S
       CLR    P3.5
       LCALL   DL19MIN
       LJMP   START
現(xiàn)在想加上顯示,20分鐘為一個(gè)周期,讓數(shù)碼管計(jì)數(shù),我想到用定時(shí)中斷完成顯示和P3.7,P3.5的動(dòng)作,可寫了幾次都不成功,想請教高手們幫忙,不勝感激!


2樓: >>參與討論
yexrui
??
 
3樓: >>參與討論
maychang
寫了幾次都不成功
怎么不成功?
至少要把你寫的程序貼出來吧?

4樓: >>參與討論
stive
把程序貼出來吧
把程序貼出來吧
讓大家看看。

5樓: >>參與討論
zhwh45
對啊
對啊,然怎么知道那里不行啊


6樓: >>參與討論
59884881
wu1980
把你的所有程序都貼出好了,不然哪個(gè)能幫你呢??

7樓: >>參與討論
stuartlh
說的太不清楚了!
是什么地方不成功?
定時(shí)中斷嗎?

8樓: >>參與討論
WU1980
1121
大家好!以下為我寫的程序:



;中斷入口

;

     ORG    0000H

     LJMP   START

     ORG    000BH

     LJMP   INTT0

     RETI

;

;初始化

;

     CLEAR:  MOV  30H,#00H

             MOV  P2,#00H

             MOV  P3,#0FFH

             MOV  P1,#0FFH

             MOV  R0,#70H

             MOV  R7,#06H

     CLEARDISP: MOV  @R0,#00H

                INC   R0

               DJNZ   R7,CLEARDISP

             MOV   TMOD,#01H

             MOV   TL0,#0B0H  ;50MS中斷一次

             MOV   TH0,#3CH

             SETB  EA

             SETB  ET0

             SETB  TR0

             MOV   R4,#14H   ;50MS X 20=1S

             SETB  P2.7

             SETB  P2.5

             RET

;

;

;主程序

;

     START:  ACALL   CLEAR

     MAIN:  LCALL   DISPLAY

            SJMP    MAIN

;

;

;T0中斷服務(wù)程序

     INTT0:  PUSH   ACC

             PUSH   PSW

             CLR    ET0

             CLR    TR0

             MOV   A,#0B7H  ;中斷響應(yīng)時(shí)間同步修正

             ADD   A, TL0

             MOV   TL0,A

             MOV    A,#3CH

             ADDC   A, TH0

             MOV   TH0,A

             SETB   TR0

             

             DJNZ   R4,OUTT0

         ADDF: MOV  R4,#14H

               

               INC  30H      ;計(jì)數(shù)單元

               MOV  A,30H

               CJNE  A,#02H,ADDRET ;2S后執(zhí)行以下動(dòng)作

         

               CLR  P2.7

               CLR  P2.5

         

               CJNE  A,#04H,ADDRET ;4S后執(zhí)行以下動(dòng)作

        

                SETB  P2.7

                SETB  P2.5

          

                CJNE  A,#06H,ADDRET;6S后執(zhí)行以下動(dòng)作

          

                  CLR  P2.7

                  CLR  P2.5

          

                  CJNE  A,#60H,ADDRET;1MIN后執(zhí)行以下動(dòng)作

          

                  SETB  P2.6

                  SETB  P2.5

         

                  CJNE  A,#62H,ADDRET;62S后執(zhí)行以下動(dòng)作

          

                    CLR  P2.6

                    CLR  P2.5

            

                   CJNE  A,#0FFH,ADDRET ;255S后重新循環(huán)(本來是想寫19MIN鐘,不知怎么去處理)

           

                    MOV   30H,#00H ;計(jì)數(shù)單元清零

&n
9樓: >>參與討論
WU1980
112
 
10樓: >>參與討論
WU1980
著急
為什么沒有人理我呢?我好急啊!

11樓: >>參與討論
焊出個(gè)未來
這種匯編看起來比有的C還舒服
 
12樓: >>參與討論
阿南
re:
20分鐘太久了吧!你可以先將定時(shí)器中斷調(diào)成功了(能再你的期望時(shí)間下正常產(chǎn)生中斷),再調(diào)個(gè)20秒的,最后再試20分鐘,否則你都要等個(gè)半死!

13樓: >>參與討論
WU1980
111
謝謝阿南,如果要在期待的中斷時(shí)間到后,置標(biāo)志位,該怎么寫呢?基本中斷是50MS可以產(chǎn)身,可1MIN,5MIN,19MIN的中斷時(shí)間該怎樣去得到呢?這是我很迷惑的,麻煩高手解答一下?

14樓: >>參與討論
lancelotus
定時(shí)類似如下試試可否?
SftClk:    inc    50MSec
    mov    A, 50MSec
    cjne    A, #20, SftClkExit
    mov    MSec, #0
    setb    IsSecOn
    inc    Sec
;......


15樓: >>參與討論
huxiangbin
在中斷里做一把邏輯尺,量得哪個(gè)就置一個(gè)標(biāo)志
  然后在主程序中查該標(biāo)志,再作相應(yīng)動(dòng)作,最后別忘清呦,否則會(huì)有麻煩的,祝你成功。

16樓: >>參與討論
wu1980
感謝以上兩位
大俠們能否幫我再看一下﹐怎樣得到那些中斷時(shí)間﹐以下為我模仿lancelotus 寫得
程序﹕
76H,77H,78H分別為計(jì)數(shù)單元﹐先對它們清零
。。。先產(chǎn)生50MS中斷
sftclk:  inc   76h
         mov   a,76h
         cjne  a,#20,outt0
         setb   p2.7
         inc    77h
         mov   a,77h
         cjne   a,#20,outt0
         clr    p2.7
         inc    78h
         mov   a,78h
         cjne  a,#20,outt0
          setb   p2.5
outt0:   pop    psw
         pop    acc
         reti
這樣執(zhí)行的結(jié)果好象不符合要求﹐比如到1MIN,5MIN,19MIN的中斷時(shí)間后分別處理三個(gè)動(dòng)作該怎樣寫呢﹖我的問題出在哪里呢﹖幫忙解答一下啊﹐謝謝了
      

17樓: >>參與討論
wu1980
??
???

18樓: >>參與討論
khw
就是一個(gè)定時(shí)問題
定時(shí)的計(jì)數(shù)取決于你的中斷時(shí)間
eg:
   一般取10ms的中斷時(shí)間,如果定時(shí)為50ms則中斷計(jì)數(shù)為5

19樓: >>參與討論
wu1980
11
謝謝﹗一個(gè)定時(shí)沒有問題﹐可我現(xiàn)在要的是連續(xù)的幾個(gè)中斷時(shí)間﹐因?yàn)槊總(gè)中斷時(shí)間到后都會(huì)執(zhí)行一個(gè)動(dòng)作的


20樓: >>參與討論
wu1980
111
謝謝﹗一個(gè)中斷時(shí)間沒有問題﹐可多個(gè)中斷時(shí)間時(shí)﹐就不會(huì)處理了﹐因?yàn)槊總(gè)中斷時(shí)間到后﹐就要處理相應(yīng)的動(dòng)作。

21樓: >>參與討論
南方的老樹
給你一個(gè)我編的asm語言的框架把,什么中斷都有了
;+=========================================================+
;|  8051 偽指令定義                                                                        |
;+=========================================================+

        WDI     EQU     097H    ;定義看門狗的清除標(biāo)志

;+=========================================================+
;|  8051 中斷處理程序入口                                                                  |
;+=========================================================+

        ORG     0000H        ;程序開始
        LJMP    main        ;跳轉(zhuǎn)主程序

    ORG    0003H        ;外部中斷int0的中斷入口
    LJMP    EI0_ISR        ;跳轉(zhuǎn)定時(shí)器INT0中斷服務(wù)子程序

        ORG     000BH        ;定時(shí)器t0的中斷入口
        LJMP    T0INT        ;跳轉(zhuǎn)定時(shí)器0中斷服務(wù)子程序

    ORG    0013H        ;外部中斷int1的中斷入口
    LJMP    EI1_ISR        ;跳轉(zhuǎn)定時(shí)器INT1中斷服務(wù)子程序

        ORG     0023H        ;串口中斷入口
        LJMP    INTERS        ;跳轉(zhuǎn)串口中斷服務(wù)子程序

;+=========================================================+
;|  8051 主程序                                       |
;+=========================================================+


        ORG     100H        ;主程序從地址100H開始執(zhí)行

;+=========================================================+
;|  8051 定時(shí)器、外部中斷、串口配置                   |
;+=========================================================+

main:   MOV     SP,#70H        ;設(shè)置堆棧,以下是單片機(jī)初始化
        MOV     TMOD,#21H    ;設(shè)置定時(shí)器1和串行接口
        MOV     TL1,#0FDH     ;參數(shù)9600波特率,時(shí)鐘11.0592MHZ
        MOV     TH1,#0FDH
        SETB    TR1        ;啟動(dòng)定時(shí)器1中斷
        MOV     SCON,#50H    ;啟動(dòng)串口口控制寄存器
        SETB    ES        ;啟動(dòng)串口中斷
        SETB    ET0        ;啟動(dòng)定時(shí)器t0中斷
        CLR    IT0        ;選擇外部中斷0為低電平觸發(fā)
        CLR    IT1        ;選擇外部中斷1為低電平觸發(fā)
    SETB    EX0        ;啟動(dòng)外部中斷0
    SETB    EX1        ;啟動(dòng)外部中斷1
        MOV     TH0,#0B1H    ;設(shè)置定時(shí)器0參數(shù)    
        MOV     TL0,#0E0H
        CLR     RS0        ;設(shè)置寄存器區(qū)基本參數(shù)
        CLR     RS1
        SETB    TR0        ;啟動(dòng)定時(shí)器0中斷
        SETB    IP.4        ;設(shè)置中斷優(yōu)先級(jí),串口中斷為最高
        CLR     IP.1        ;設(shè)置定時(shí)器0優(yōu)先級(jí),低于串口中斷    
    SETB    EA        ;啟動(dòng)全部中斷

;+=========================================================+
;|  8051 主流程                                                                          |
;+=========================================================+

L01:    CPL     WDI        ;對看門狗取反
    SJMP     L01        ;主程序流程結(jié)束

;+=========================================================+
;|  定時(shí)器0中斷服務(wù)子程序                            |
;+=========================================================+


T0INT:  CPL    P1.0        ;對P1.0取反,設(shè)置定時(shí)器中斷到的標(biāo)志
                ;在示波器上可以看到方波
   &
22樓: >>參與討論
南方的老樹
上面是一個(gè)完整的匯編程序,完成一些簡單的示范的功能
 
23樓: >>參與討論
南方的老樹
該程序框架的目的
該程序框架的目的
1)      將所有需要設(shè)置的功能都放在這個(gè)程序框架中,只需要將這個(gè)程序框架讀懂,51的匯編語言基本都有了;即使不懂,也可以在這個(gè)框架內(nèi)跑一些小的程序;
2)      設(shè)置各種寄存器;可以找到單片機(jī)的書籍,查閱以上各種寄存器的每個(gè)bit的含意;
3)      這個(gè)程序完成以下功能:
1.    串行接收和發(fā)送
配置串口參數(shù),工作在:9600,無校驗(yàn),8位,1個(gè)停止位,時(shí)鐘為11.0592M
其它的波特率可以參考各種51的書籍
接收一個(gè)數(shù)后,再加1,發(fā)出去,此時(shí),對某個(gè)口線取反;
2.    定時(shí)器0中斷
在定時(shí)器0中斷子程序中對某個(gè)口線取反;
可以調(diào)整定時(shí)器0的參數(shù),使得口線輸出的波形的頻率改變;
3.    外部中斷0
可以在外部中斷0的口線上接一個(gè)按鍵,按下一次,則相應(yīng)的口線上的電平變化一次;
4.    外部中斷1
可以在外部中斷0的口線上接一個(gè)按鍵,按下一次,則相應(yīng)的口線上的電平變化一次;
5.    看門狗的操作
在主程序中,對P1.7取反,輸出給看門狗的WDI(watchdog input, 看門狗輸入信號(hào)),具體看門狗是哪個(gè)口線,在偽指令上可以修改相應(yīng)的地址即可。
________________________________________________________________

你說的,多個(gè)中斷時(shí)間時(shí),是不是也能按照我這個(gè)程序去處理,可以試試在我的這個(gè)框架內(nèi)完成看看。


24樓: >>參與討論
wu1980
謝謝
謝謝老樹先生﹕
    你寫的框架肯定會(huì)對我們有幫助的﹐我寫的這個(gè)程序只用了T0定時(shí)中斷﹐主要是想利用不同長短的定時(shí)時(shí)間到后完成相應(yīng)時(shí)刻的動(dòng)作﹐然后循環(huán)下去﹐前面好幾位說的道理我都懂﹐也試了多次﹐上電后沒達(dá)到目標(biāo)﹐肯定是我寫的程序有問題﹐我是不是太笨了﹐就是沒弄出來﹐一個(gè)中斷的時(shí)侯沒任何問題﹐因?yàn)槲以?jīng)成功的寫出過電子鐘程序。

25樓: >>參與討論
khw
說得再清楚些
在一T0中斷中就可以完成所有的定時(shí)任務(wù)
如你的T0中斷設(shè)為1ms,在此中斷中設(shè)一個(gè)中斷計(jì)數(shù)標(biāo)志TimCount(初始化為0每
進(jìn)入一次中斷增1)
你的定時(shí)任務(wù)為10ms(或更長), 那么TimCount=10時(shí),定時(shí)時(shí)間到,此時(shí)再置
任務(wù)標(biāo)志,最后在主程序中查看此標(biāo)志并轉(zhuǎn)入相應(yīng)的子程序中。

參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
帶電拔插串口或時(shí)并口對計(jì)算機(jī)和設(shè)備究竟有沒有損害?
一個(gè)關(guān)于預(yù)定義宏的問題
C51編程:在keilc51用匯編語言寫的程序,用 monitor仿真問題
51單片機(jī)里的SFR中的ACC和A寄存器是同一個(gè)東西嗎?
philips單片機(jī)ISP求助!求大俠們幫幫忙!
免費(fèi)注冊為維庫電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào)