久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2755|回復: 3
打印 上一主題 下一主題
收起左側

很急需要幫忙 關于電子鐘彙編語言

[復制鏈接]
跳轉到指定樓層
樓主
ID:139514 發表于 2017-1-2 17:55 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
100黑幣
寫電子鐘彙編語言,發射端發射4個數字到接收端的數碼管顯示四位數字,分別是分和秒各兩位數,
發射端:TIMER0是寫發射數字的判別式,TIMER1是配合串列埠模式1,SERIES是串列埠中斷接收端:LOOP是接端數字的判別式,接收一個BYTE,高位元是位數,低位元是數字,
TIMER0是顯示四位數字,SERIERS是串列埠中斷
程式寫不出來需要幫忙,發射端的TIMER0暫時寫秒的個位和十位,接收端的判別
數字接收過來的判別式已經寫好了,但是數字送過去依然失敗,接收端的TIMER0
程式沒有任何錯誤,可以在數碼管顯示數字,請神人幫忙完成越快越好
我用兩塊一樣的開發粄~

發射端程式:
                q1 EQU 31H  ;個位
                q2 EQU 32H  ;十位                                


        
                ORG 0000H
                AJMP START
                ORG 000BH
                AJMP TIMER0                                
                ORG 001BH
                AJMP TIMER1
                ORG 0023H
                AJMP SERIES               
                                

START:        MOV IP,#00011010B ;中斷優先權有:串列埠.計數器1.計數器0
                MOV IE,#10010010B ;中斷開啟有:總開關.串列埠.計數器0
                MOV SCON,#01000000B ;串列埠模式1,不可接收資料
                MOV        TMOD,#00100010B ;計數器1模式2,計數器0模式2
                MOV TCON,#11110000B ;計數器1開啟,計時器0溢位旗標,計時器0開啟
                SETB TR0 ;開啟計數器0
                MOV  TH1,#253        ;設定計時器1的值,鮑率=9600
                SETB TR1        ;開啟計數器1                                
                MOV DPTR,#TABLE ;DPTR指向數碼管資料區                        
                        MOV q1,#00H ;個位,判別位數=0,數字=0                                
                        MOV q2,#10H ;十位,判別位數=1,數字=0        

LOOP: sjmp loop         
;---------------------------------------------------
TIMER0:  
                PUSH ACC
                CLR TR0     ;關閉計數器0
                MOV TH0,#6
                MOV TL0,#6
               
               
                djnz r4,k0       ; 延遲時間
                mov r4,#100   ;
                djnz r5,k0       ;
                mov r5,#2      ;

                                          ;q1=00,00~09    q2=10,10~15
                mov a,q1    ;q1=要發射的個位   
                inc a
                mov q1,a
                cjne a,#0ah,k1  ; 發射個位的式子,發射0~9是跑到k1
                mov a,#00h     ;當發射個位超過0a時會歸零
                mov q1,a        
                mov sbuf,a   ;發射個位等於0時
                acall delay
                                
                mov a,q2    ;q2=要發射的十位
                inc a
                mov q2,a
                cjne a,#16h,k1        ; 發射十位的式子,發射0~5是跑到k1                                                        
                mov a,#10h       ;把十位數歸零,但判別位數還是1
                mov q2,a
                mov sbuf,a
                acall delay

k0:                setb tr0
                pop acc
                reti          ;返回主程式
k1:        
                mov sbuf,a     ;發射數字
                acall delay
                        
                setb tr0
                pop acc
                reti     ;返回主程式
;---------------------------------------------------
TIMER1:                                                
                PUSH ACC                        
                CLR TR1                                
                                                               
                MOV TH1,#253        
                SETB TR1        
                POP ACC               
                RETI               
;---------------------------------------------------
SERIES:        
                JNB TI,RECEIVE ;判斷是否傳送完畢,如果否,就是接收完畢中斷
                CLR TI
                RETI
RECEIVE:               
               
                CLR RI        ;清除接收中斷旗標               
                MOV A,SBUF
                RETI
;---------------------------------------------------
TABLE:  DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H ; 數字0~9                                       
        
DELAY:        MOV R6,#250    ;延遲的副程式
DL1:        MOV R7,#200
DL2:        DJNZ R7,DL2
                DJNZ R6,DL1
                RET
               
                END



以下是接收端的程式:


        ScanLine                 EQU  22H   ;掃描信號
        packet                equ  23h    ;接收數字的寄存器

                                                
                        
                        ORG  0000H
                        AJMP START
                        ORG  000BH
                        AJMP TIMER0
                        ORG 0023H
                        AJMP SERIES
               



START:         MOV IP,#00011010B ;中斷優先權:串列埠.計數器1.計數器0
                MOV IE,#10011010B ;中斷致能:總開關開啟.串列埠.計數器1.計數器0
                MOV        SCON,#01010000B ;串列埠模式1,REN=1可接收資料
                MOV        TMOD,#00100001B ;計數器1模式2,計數器0模式1
                MOV TCON,#11110000B ;-計數器1溢位+啟動,計數器0溢位+啟動
                MOV TH0,#0ECH
                MOV TL0,#78H
                SETB TR0 ;-計數器0開啟
                SETB EA
                SETB ET0
                SETB ET1
                MOV         TH1,#253        ;計數器1模式自動在載入253,鮑率=9600                        
                SETB TR1                ;開啟記數器1
                SETB TR0 ;開啟記數器0        
                        MOV SP,#60H ;SP堆疊暫存器指向位置60H
                        MOV ScanLine,#11110111B         ;掃描信號初值
                        MOV DPTR,#TABLE        ;DPTR指向數碼管資料區
                        MOV R0,#30H                ;四位數資料區
                        MOV 30H,#00                ;個位歸零
                        MOV 31H,#00                ;十位歸零
                        MOV 32H,#00                ;百位歸零
                        MOV 33H,#00            ;千位歸零
                        mov packet,#00         ;接收數字的寄存器

loop:
        
        mov packet,sbuf ; 把接收的數字放到packet的寄存器裡面                                                                                   
        mov a,packet     ;把數字放到累積器a裡面
        anl a,#0f0h  ;把數字過濾個位數字,會剩下位數        
        cjne a,#00h,k1 ;判別是否為個位數字,若不是則跳k1副程式
        anl packet,#0fh ;把接收到個位數字的位數歸零留下數字
        mov r1,#30h
        mov @r1,packet   ;把濾除後留下的數字放入r1裡面即可顯示數字
        ajmp loop
k1:               
        cjne a,#10h,k2 ;判別是否為十位數字,若不是則跳k2副程式
        anl packet,#0fh ;把接收到十位數字的位數歸零留下數字
        inc r1         ;r1=31h
        mov @r1,packet   ;把濾除後留下的數字放入r1裡面即可顯示數字
        ajmp loop
               
k2: ajmp loop

TIMER0:         
                PUSH ACC
                CLR  TR0     ;關閉計數器0
                MOV TH0,#0F4H   ;重新設定計數器0的數值
                MOV TL0,#078H        
                MOV A,@R0          ;載入時間資料
                MOVC A,@A+DPTR        ;將BCD碼轉成顯示碼
                MOV P0,A              ;將顯示碼送到P0
                INC R0                        ;下一位數        
                MOV A,ScanLine      
                MOV P2,A           ;輸出掃描信號
                RR A              ;掃描下一行
                MOV ScanLine,A   ;更新掃描信號
                CJNE A,#10111111B,ti00   ;已經掃描完四位數?
                MOV R0,#30H                ;重新設定緩衝區位址30H               
                MOV ScanLine,#11110111B  ;重新設定掃描信號

ti00:        SETB TR0
                POP  ACC                        
                RETI    ;返回主程式
        
;---------------------------------------------------
SERIES:                                          
                        JNB TI,RECEIVE
                        CLR TI
                        RETI
RECEIVE:                                                                                                                  
                        CLR RI         
                        MOV        A,SBUF                                                
                        mov packet,a
                        RETI
;--------------------------------------------------------
TABLE:        DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H ;0~9               

DELAY:        MOV R6,#250    ;延遲副程式
DL1:        MOV R7,#200
DL2:        DJNZ R7,DL2
        DJNZ R6,DL1
        RET
               
        END


51 AVR最小系統.pdf

656.92 KB, 下載次數: 10

開發粄電路

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

使用道具 舉報

沙發
ID:7485 發表于 2017-1-2 22:03 | 只看該作者
你的程序我沒看完。不知道你的計數源是什么?分、秒是怎么產生的。你的學習板上的晶振是多少的?波特率對不對?兩塊板子是怎么連接的,連接線多長?
但是,
C/T1做波特率發生器不應該開中斷,更沒有中斷優先權。中斷程序“TIMER1”也不需要。包括接收端和發送端
//發送端可以不開串口中斷。
回復

使用道具 舉報

板凳
ID:139514 發表于 2017-1-3 09:34 | 只看該作者
分和秒的產生是用發送端的TIMER0,晶振11.0592,發射端的TXD接腳用杜邦線接到
接收端的RXD街角,波特率我算過了正確無誤,板子是YL-39開發版,兩個開發版,只是
將發射端發射數字到接收端那裏顯示數字,請問C/T1是指發射端還是接收端??
謝謝你下面給我的意見,有些東西不需要我卻打上去,抱歉我是新手,感謝你給我的意見
回復

使用道具 舉報

地板
ID:613800 發表于 2019-9-25 10:12 | 只看該作者
很詳細
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美国产视频 | 精品综合久久久 | 午夜看片| 国产成都精品91一区二区三 | 久久免费精品视频 | 一本色道久久综合亚洲精品高清 | 国产乱码高清区二区三区在线 | 欧美日韩在线一区二区 | 久久久久久91 | 久久久久国产一区二区三区 | 91.com在线观看| 欧美午夜影院 | 啪一啪在线视频 | 日韩欧美手机在线 | 国产精品久久久久久久模特 | 欧美在线视频网 | 青青久久 | 亚洲色图网址 | 欧美一级毛片久久99精品蜜桃 | 人人干人人超 | 高清av电影 | 欧美中文字幕一区二区三区亚洲 | 亚洲欧美一区二区三区1000 | 黄色电影在线免费观看 | www国产成人免费观看视频,深夜成人网 | 日韩免费在线 | 久久亚洲一区 | 国产精品久久久久久亚洲调教 | 久久亚洲国产精品日日av夜夜 | 五月婷婷丁香 | 欧美激情一区二区三区 | 日韩在线欧美 | 欧美精品福利 | 国产精品视频不卡 | 国产在线精品一区二区三区 | 欧美日韩亚洲三区 | 国产精品久久久久久久久久久免费看 | 中文字幕亚洲专区 | 亚洲美女一区二区三区 | 久久在看 | 国产 日韩 欧美 在线 |