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

標(biāo)題: 求助電子時(shí)鐘的程序 [打印本頁(yè)]

作者: hayvane    時(shí)間: 2009-7-22 21:53
標(biāo)題: 求助電子時(shí)鐘的程序

我想做一個(gè)電子時(shí)鐘的程序,匯編的
自己想了很久,可以做一個(gè)從零到60秒的,但是要顯示分,時(shí),就想不出了

程序如下
       a_bit equ 20h ;數(shù)碼管個(gè)位數(shù)存放內(nèi)存位置
b_bit equ 21h ;數(shù)碼管十位數(shù)存放內(nèi)存位置
temp equ 22h ;計(jì)數(shù)器數(shù)值存放內(nèi)存位置
org 0
ajmp star
star: mov temp,#0 ;初始化計(jì)數(shù)器,從0開始
stlop: acall display;調(diào)用顯示子程序
inc temp;對(duì)計(jì)數(shù)器加1
mov a,temp
cjne a,#100,next ;判斷計(jì)數(shù)器是否滿100?
mov temp,#0;滿100就清零重新開始
next: ljmp stlop;不滿就循環(huán)執(zhí)行

;顯示子程序
display: mov a,temp ;將temp中的十六進(jìn)制數(shù)轉(zhuǎn)換成10進(jìn)制
mov b,#10 ;10進(jìn)制/10=10進(jìn)制
div ab
mov b_bit,a ;十位在a
mov a_bit,b ;個(gè)位在b

mov dptr,#numtab ;指定查表啟始地址
mov r0,#4
dpl1: mov r1,#250 ;
dplop: mov a,a_bit ;取個(gè)位數(shù)
MOVC A,@A+DPTR ;查個(gè)位數(shù)的7段代碼
mov p2,a ;送出個(gè)位的7段代碼
mov p1,#02 ;開個(gè)位顯示
acall d1ms ;顯示162微秒
mov p1,#0;關(guān)閉個(gè)位顯示,防止鬼影
mov a,b_bit ;取十位數(shù)
MOVC A,@A+DPTR ;查十位數(shù)的7段代碼
mov p2,a ;送出十位的7段代碼
mov p1,#01 ;開十位顯示
acall d1ms ;顯示162微秒
mov p1,#0;關(guān)閉十位顯示,防止鬼影
djnz r1,dplop ;循環(huán)執(zhí)行250次
djnz r0,dpl1 ;循環(huán)執(zhí)行250X4=1000次
ret

;2+2X80=162微秒,延時(shí)按12MHZ計(jì)算
D1MS: MOV R7,#80
DJNZ R7,$
ret
 
numtab:    DB 0BFH    ;0
 DB 086H    ;1
 DB 0DBH    ;3
 DB 0CFH    ;3
 DB 0E6H    ;4
 DB 0EDH    ;5
 DB 0FDH    ;6
 DB 087H    ;7
 DB 0FFH    ;8
 DB 0EFH    ;9
 DB 080H    ;off

end 

誰(shuí)能指點(diǎn)我能后寫出分時(shí)的程序?
倒是我在網(wǎng)上搜索到了一個(gè),但是看不明白

CODE_SEG SEGMENT CODE
DATA_SEG SEGMENT DATA
STACK_SEG SEGMENT IDATA


K1 BIT P1.4
K2 BIT P1.5

 RSEG  DATA_SEG
KEY_S:  DS   1
KEY_V:    DS   1
DIS_DIGIT:    DS   1
SEC:     DS   1
DIS_INDEX:   DS    1
HOUR:    DS    1
MIN:     DS    1
SEC100:    DS    1
DIS_BUF:    DS    8
       
BUF_HOUR_H EQU DIS_BUF  ; 小時(shí)十位
BUF_HOUR_L EQU DIS_BUF+1 ; 小時(shí)個(gè)位
BUF_MIN_H EQU DIS_BUF+3 ; 分十位
BUF_MIN_L EQU DIS_BUF+4 ; 分個(gè)位
BUF_SEC_H EQU DIS_BUF+6 ; 秒十位
BUF_SEC_L EQU DIS_BUF+7 ; 秒個(gè)位

 RSEG STACK_SEG
STACK: DS 20 
 

;===============================================================================

CSEG AT 0000H
 JMP MAIN
 
CSEG AT 0000BH
 LJMP TIMER0 

CSEG AT 0001BH
 LJMP TIMER1

;===============================================================================


 RSEG  CODE_SEG
MAIN:
 USING 0
 
 MOV SP, #(STACK-1)  ;
 
 
 MOV   P0,#0FFH
 MOV   P2,#0FFH
 MOV   TMOD,#011H  ; 定時(shí)器0, 1工作模式1, 16位定時(shí)方式
 MOV   TH0,#0FCH
 MOV   TL0,#017H
 MOV   TH1,#0DCH
 CLR   A
 MOV   TL1,A
 
 MOV   HOUR,#12  ;
 CLR A   ;
 MOV   MIN,A
 MOV   SEC,A
 MOV   SEC100,A
 
 MOV   A,HOUR
 MOV   B,#10
 DIV   AB
 MOV   DPTR,#DIS_CODE
 MOVC  A,@A+DPTR
 MOV   BUF_HOUR_H,A  ; 時(shí)十位
 MOV   A,HOUR
 MOV   B,#10
 DIV   AB
 MOV   A,B
 MOVC  A,@A+DPTR
 MOV   BUF_HOUR_L,A  ; 時(shí)個(gè)位
 MOV   A,MIN
 MOV   B,#10
 DIV   AB
 MOVC  A,@A+DPTR
 MOV   BUF_MIN_H,A  ; 分十位
 MOV   A,MIN
 MOV   B,#10
 DIV   AB
 MOV   A,B
 MOVC  A,@A+DPTR
 MOV   BUF_MIN_L,A  ; 分個(gè)位
 MOV   A,SEC
 MOV   B,#10
 DIV   AB
 MOVC  A,@A+DPTR
 MOV   BUF_SEC_H,A  ; 秒十位
 MOV   A,SEC
 MOV   B,#10
 DIV   AB
 MOV   A,B
 MOVC  A,@A+DPTR
 MOV   BUF_SEC_L,A  ; 秒個(gè)位
 
 MOV   BUF_HOUR_H+02H,#0BFH
 MOV   BUF_HOUR_H+05H,#0BFH
 
 MOV   DIS_DIGIT,#0FEH
 CLR A
 MOV   DIS_INDEX,A
 
 MOV   IE,#08AH  ; 使能timer0,1 中斷
 
 SETB TR0
 SETB TR1
 
 MOV   KEY_V,#03H

:::::
:::::
寫不下了,
就是前幾行 

CODE_SEG SEGMENT CODE
DATA_SEG SEGMENT DATA
STACK_SEG SEGMENT IDATA


K1 BIT P1.4
K2 BIT P1.5

 RSEG  DATA_SEG
KEY_S:  DS   1
KEY_V:    DS   1
DIS_DIGIT:    DS   1
SEC:     DS   1
DIS_INDEX:   DS    1
HOUR:    DS    1
MIN:     DS    1
SEC100:    DS    1
DIS_BUF:    DS    8
       
BUF_HOUR_H EQU DIS_BUF  ; 小時(shí)十位
BUF_HOUR_L EQU DIS_BUF+1 ; 小時(shí)個(gè)位
BUF_MIN_H EQU DIS_BUF+3 ; 分十位
BUF_MIN_L EQU DIS_BUF+4 ; 分個(gè)位
BUF_SEC_H EQU DIS_BUF+6 ; 秒十位
BUF_SEC_L EQU DIS_BUF+7 ; 秒個(gè)位

 RSEG STACK_SEG
STACK: DS 20 
 

;===============================================================================

CSEG AT 0000H
 JMP MAIN
 
CSEG AT 0000BH
 LJMP TIMER0 

CSEG AT 0001BH
 LJMP TIMER1

;===============================================================================


 RSEG  CODE_SEG
MAIN:
 USING 0
 

這些看不明白,以前匯編的書里面出來(lái)沒有過(guò)
忘哪位大俠詳細(xì)的解釋下

[此貼子已經(jīng)被admin于2009-7-22 22:27:47編輯過(guò)]

作者: a4496216    時(shí)間: 2009-7-23 19:47
后面那個(gè)應(yīng)該大多是偽指令,多看幾次,多試幾次就明白了
最好弄個(gè)流程圖,要不心中有數(shù)
說(shuō)實(shí)話
看匯編真頭大~~~~~~

作者: rayment1199    時(shí)間: 2009-7-24 22:39
我自己寫了個(gè)C語(yǔ)言的電子時(shí)鐘   用本論壇單片機(jī)實(shí)驗(yàn)板測(cè)試通過(guò)。
   用定時(shí)原理寫的 可以用按鍵實(shí)時(shí)控制 如果你需要,留下郵箱。我發(fā)給你。
作者: hayvane    時(shí)間: 2009-7-27 08:30

謝謝!


作者: myduff    時(shí)間: 2009-8-25 23:19

我最近也做了個(gè)電子鐘匯編的。一個(gè)小小的功能還真遇到不少問(wèn)題。
首先,延時(shí)一秒不能只是延時(shí),因?yàn)閱纹瑱C(jī)是單進(jìn)程的,延時(shí)要和數(shù)碼管動(dòng)態(tài)掃描結(jié)合在一起進(jìn)行。
顯示前的十進(jìn)制轉(zhuǎn)換 DA A 也有好多要注意,主要在CJNE的使用上會(huì)出問(wèn)題。
我在考慮用定時(shí)中斷做,應(yīng)該會(huì)輕松些。


作者: hao178728326    時(shí)間: 2009-11-3 17:01
zhangmingfeng88@163.com
作者: yuan0715    時(shí)間: 2009-11-8 17:02
哇!強(qiáng)大!學(xué)習(xí)了!……




歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 黄色a一级片 | 日本高清中文字幕 | 久久久久久久综合 | 欧美成视频| 久草资源网 | 国产免费a | 日日操夜夜骑 | 五月天在线观看 | 制服丝袜av在线 | 91久久久久久久久久 | 国产女人18毛片18精品 | 久久久婷婷 | 天天射天天舔 | 日本在线视频一区 | 毛片中文字幕 | 特大黑人巨交吊性xxxx视频 | 欧美日韩免费 | 中文字幕有码在线 | 午夜久久久久久久 | 日韩精品一区二区三区免费视频 | 亚洲免费精品视频 | 人人草人人 | 99视频免费在线观看 | 欧美日韩在线观看视频 | 久久亚洲免费视频 | 久久久久国产视频 | 久久久国产视频 | 免费av一区| 国产精品www | 国产一区精品在线观看 | 亚洲精品91天天久久人人 | 亚洲最大的网站 | 久久久久成人网 | 黄色一级片免费看 | 中文字幕一区二区三区视频 | 色婷婷六月| 国产精品久久一区二区三区 | 91精品国产色综合久久不卡98 | 免费毛片在线 | 日韩欧美不卡 | 色婷婷香蕉在线一区二区 |