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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

求助電子時鐘的程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:10806 發表于 2009-7-22 21:53 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

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

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

;顯示子程序
display: mov a,temp ;將temp中的十六進制數轉換成10進制
mov b,#10 ;10進制/10=10進制
div ab
mov b_bit,a ;十位在a
mov a_bit,b ;個位在b

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

;2+2X80=162微秒,延時按12MHZ計算
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 

誰能指點我能后寫出分時的程序?
倒是我在網上搜索到了一個,但是看不明白

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  ; 小時十位
BUF_HOUR_L EQU DIS_BUF+1 ; 小時個位
BUF_MIN_H EQU DIS_BUF+3 ; 分十位
BUF_MIN_L EQU DIS_BUF+4 ; 分個位
BUF_SEC_H EQU DIS_BUF+6 ; 秒十位
BUF_SEC_L EQU DIS_BUF+7 ; 秒個位

 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  ; 定時器0, 1工作模式1, 16位定時方式
 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  ; 時十位
 MOV   A,HOUR
 MOV   B,#10
 DIV   AB
 MOV   A,B
 MOVC  A,@A+DPTR
 MOV   BUF_HOUR_L,A  ; 時個位
 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  ; 分個位
 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  ; 秒個位
 
 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  ; 小時十位
BUF_HOUR_L EQU DIS_BUF+1 ; 小時個位
BUF_MIN_H EQU DIS_BUF+3 ; 分十位
BUF_MIN_L EQU DIS_BUF+4 ; 分個位
BUF_SEC_H EQU DIS_BUF+6 ; 秒十位
BUF_SEC_L EQU DIS_BUF+7 ; 秒個位

 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
 

這些看不明白,以前匯編的書里面出來沒有過
忘哪位大俠詳細的解釋下

[此貼子已經被admin于2009-7-22 22:27:47編輯過]
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:15225 發表于 2009-7-23 19:47 | 只看該作者
后面那個應該大多是偽指令,多看幾次,多試幾次就明白了
最好弄個流程圖,要不心中有數
說實話
看匯編真頭大~~~~~~
回復

使用道具 舉報

板凳
ID:11838 發表于 2009-7-24 22:39 | 只看該作者
我自己寫了個C語言的電子時鐘   用本論壇單片機實驗板測試通過。
   用定時原理寫的 可以用按鍵實時控制 如果你需要,留下郵箱。我發給你。
回復

使用道具 舉報

地板
ID:10806 發表于 2009-7-27 08:30 | 只看該作者

謝謝!

回復

使用道具 舉報

5#
ID:15676 發表于 2009-8-25 23:19 | 只看該作者

我最近也做了個電子鐘匯編的。一個小小的功能還真遇到不少問題。
首先,延時一秒不能只是延時,因為單片機是單進程的,延時要和數碼管動態掃描結合在一起進行。
顯示前的十進制轉換 DA A 也有好多要注意,主要在CJNE的使用上會出問題。
我在考慮用定時中斷做,應該會輕松些。

回復

使用道具 舉報

6#
ID:18774 發表于 2009-11-3 17:01 | 只看該作者
zhangmingfeng88@163.com
回復

使用道具 舉報

7#
ID:16728 發表于 2009-11-8 17:02 | 只看該作者
哇!強大!學習了!……
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 精品美女 | 一级片在线播放 | 久久91精品国产 | 久久鲁视频 | 九九视频在线观看 | 特级丰满少妇一级aaaa爱毛片 | 性一爱一乱一交一视频 | 欧美日韩在线一区二区 | 麻豆av网站 | 在线播放精品视频 | 日韩欧美精品 | 一区免费看| 爱草在线| 亚洲天堂中文字幕 | 亚洲午夜av久久乱码 | 一区二区不卡高清 | 亚洲视频在线看 | 一级做a爰片久久毛片 | 中文字字幕一区二区三区四区五区 | 免费在线成人 | 涩在线 | 国产精品免费一区二区三区四区 | 99久久精品一区二区成人 | 成人影院免费视频 | 日韩一区二区在线看 | 欧美一区二区三区免费电影 | 欧美精品区| 无码一区二区三区视频 | 亚洲女优在线播放 | 综合成人在线 | 在线观看成人免费视频 | 亚洲精品一区二区网址 | 国产黄色网 | 国产精品成人免费 | 91欧美精品成人综合在线观看 | 男女网站视频 | 天天干天天想 | avmans最新导航地址 | 在线看国产 | 欧美日韩精品一区二区天天拍 | 成人免费一区二区 |