1樓:匿名使用者
《c程式設計》第
二、三版,譚浩強,清華大學出版社
這是通用的教材 ,你可以看下
2樓:陳學陽
org 0000h
ljmp start
org 001bh ;int t1 入口地址
ljmp int_t1
org 0080h
start:
mov sp,#60h
mov 30h,#0
mov 31h,#0
mov 32h,#0
mov 33h,#0
mov 34h,#0
mov 35h,#0
mov 36h,#0
mov 37h,#0
mov r3,#0h ;時
mov r2,#0h ;分
mov r1,#0h ;秒
mov r6,#0h ;標誌
mov r7,#0h ;標誌
mov 38h,#0h ;標誌
mov 39h,#0h ;標誌
mov tmod,#10h
mov tl1,#00h ;50 ms 的時間常數
mov th1,#04ch
mov r0,#10
mov r4,#2
setb p2.7
setb tr1
setb et1
setb ea ;允許中斷
loop:
lcall scankey
cjne r7,#0ffh,wait1
lcall display2
sjmp loop
wait1:
cjne r6,#0ffh,wait
lcall display1
mov 34h,30h
mov 35h,31h
mov 36h,32h
mov 37h,33h
sjmp loop
wait:
lcall display
sjmp loop
int_t1: ;int_t1中斷服務子程式
push dph ;保護現場
push dpl
push acc
push psw
clr tr1
mov tl1,#00h ;50ms 定時常數
mov th1,#4ch
setb tr1
djnz r4,exit1
mov r4,#2
mov a,30h
cjne a,#09h,s0
mov 30h,#0
mov a,31h
cjne a,#9h,s1
mov 31h,#0h
mov a,32h
cjne a,#9h,s2
mov 32h,#0h
mov a,33h
cjne a,#9h,s3
mov 33h,#0h
s3:mov a,33h
add a,#1
mov 33h,a
s2:mov a,32h
add a,#1
mov 32h,a
s1:mov a,31h
add a,#1
mov 31h,a
s0:mov a,30h
add a,#1
mov 30h,a
djnz r0,exit1 ;判斷毫秒=0
mov r0,#10 ;delay 1 second
cpl p2.7
mov a,38h
cjne a,#0ffh,next1
ljmp hour1
next1:
mov a,39h
cjne a,#0ffh,next2
ljmp minute1
next2: cjne r1,#59h,second ;判斷秒=59
mov r1,#99h
minute1:cjne r2,#59h,minute ;判斷分=59
mov r2,#99h
hour1:cjne r3,#23h,hour ;判斷時=23
mov r3,#99h
hour:
mov a,r3
add a,#1 ;時加1
da a
mov r3,a
mov a,38h
cjne a,#00,exit1
minute:
mov a,r2
add a,#1 ;分加1
da a
mov r2,a
mov a,39h
cjne a,#00,exit1
second:
mov a,r1
add a,#1 ;秒加1
da a
mov r1,a
exit1:
mov 38h,#0h
mov 39h,#0h
pop psw ;恢復現場
pop acc
pop dpl
pop dph
reti ;中斷返回
display:
mov a,r3
anl a,#0fh
mov dptr,#ledseg
movc a,@a+dptr
mov p0,a
;mov p2,#0fbh
setb p2.0
clr p2.2
setb p2.1
setb p2.3
lcall delay
mov a,r3
swap a
anl a,#0fh
mov dptr,#ledseg
movc a,@a+dptr
mov p0,a
setb p2.0
clr p2.3
setb p2.2
setb p2.1
;mov p2,#0f7h
lcall delay
mov a,r2
anl a,#0fh
mov dptr,#ledseg
movc a,@a+dptr
mov p0,a
setb p2.1
clr p2.0
setb p2.2
setb p2.3
;mov p2,#0feh
lcall delay
mov a,r2
swap a
anl a,#0fh
mov dptr,#ledseg
movc a,@a+dptr
mov p0,a
setb p2.0
clr p2.1
setb p2.2
setb p2.3
;mov p2,#0fdh
lcall delay
retdisplay1:
mov a,30h
mov dptr,#ledseg
movc a,@a+dptr
mov p0,a
mov p2,#0feh
lcall delay
mov a,31h
mov dptr,#ledseg
movc a,@a+dptr
mov p0,a
mov p2,#0fdh
lcall delay
mov a,32h
mov dptr,#ledseg
movc a,@a+dptr
mov p0,a
mov p2,#0fbh
lcall delay
mov a,33h
mov dptr,#ledseg
movc a,@a+dptr
mov p0,a
mov p2,#0f7h
lcall delay
retdisplay2:
mov a,34h
mov dptr,#ledseg
movc a,@a+dptr
mov p0,a
mov p2,#0feh
lcall delay
mov a,35h
mov dptr,#ledseg
movc a,@a+dptr
mov p0,a
mov p2,#0fdh
lcall delay
mov a,36h
mov dptr,#ledseg
movc a,@a+dptr
mov p0,a
mov p2,#0fbh
lcall delay
mov a,37h
mov dptr,#ledseg
movc a,@a+dptr
mov p0,a
mov p2,#0f7h
lcall delay
retdelay: ;延時子程式
push 0 ;儲存現場
push 1
mov 0,#1h
delay1: mov 1,#0fh
djnz 1,$
djnz 0,delay1
pop 1 ;恢復現場
pop 0
retscankey:
setb p1.0
jb p1.0,p11
lcall delay
jb p1.0,p11
mov r6,#0ffh
mov r7,#0h
mov 30h,#0
mov 31h,#0
mov 32h,#0
mov 33h,#0
sjmp loop1
p11:
setb p1.1
jb p1.1,p12
lcall delay
jb p1.1,p12
mov r6,#0h
mov r7,#0h
sjmp loop1
p12:
setb p1.2
jb p1.2,p13
lcall delay
jb p1.2,p13
mov r7,#0ffh
sjmp loop1
p13:
setb p1.3
jb p1.3,p14
lcall delay
jb p1.3,p14
mov 38h,#0ffh
sjmp loop1
p14:
setb p1.4
jb p1.4,loop1
lcall delay
jb p1.4,loop1
mov 39h,#0ffh
sjmp loop1
loop1:
retledseg: db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h ;'0,1,2,3,4,5,6,7'
db 7fh,6fh,77h,7ch,39h,5eh,79h,71h ;'8,9,a,b,c,d,e,f'
db 6dh,02h,08h,00h,59h,0fh,76h
end如果對您有幫助,請記得采納為滿意答案,謝謝!祝您生活愉快!
小弟剛學微控制器,遇到了驅動數碼管的問題(不用鎖存器)。現在苦無思路,望大俠給點幫助謝謝謝
愛迪貓 怎麼錯了?都是低電平有效 p0口應接電阻 你用低電平有效,所以p0口可以不加上拉。很多微控制器io口可設4鍾狀態,也不需要上拉了。ic 鎖存器 輸出有電流限制,不加電阻,電流也不會太大,但ic功耗大了。採用掃描方式 動態 亮度低,需要減小限流電阻,位數越多,要求限流電阻越小,但小到一定程度,...
我是微控制器初學者,我想問一下我需要學哪些知識
我覺得首先要看懂111條指令,懂意思就行,根本就不需要每一條都記住,因為常用的都只有四五十條罷了。那麼多的指令意在可以用多種語句實現同一種功能。還有就是一定要實際的程式設計,這一點是非常重要的,只有在實際程式設計中才能熟悉指令的應用,當然你或許會問自己什麼都不懂怎麼程式設計啊,這時候你不要著急,你可...
我是今年剛畢業的大專學生,學的是電子商務專業,我打算去日本進修本科,然後讀研究生
天津要壞 專業是能換 但要早換 如果還找不到自己想學或想做得事情 建議先工作 在工作中學中國這邊的教育都是沒完沒了的往上學 但實際社會 不管是日本還是中國 都比較看實際水平當你真讀完修士找工作就會發現 不會那麼輕鬆 工資不會那麼高 甚至和剛畢業的沒區別 這是實情 除非你有多麼出眾的技術 但這不太可能...