这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » 请教大虾有时间把这个程序给编出来!

共2条 1/1 1 跳转至

请教大虾有时间把这个程序给编出来!

院士
2006-09-17 18:14:16     打赏
请教大虾有时间把这个程序给编出来!



关键词: 请教     大虾     时间     这个     程序     出来    

院士
2006-12-22 22:43:00     打赏
2楼
问 我想做一个数字钟
这个我感觉不错,
我是初学,可不知道怎么编程。
可是网站上没有源程序
请教一下能不能抽点时间,给编编? 1: 使用89C2051单片机的智能电子钟 2: 你还是自己动手有长进俺84年也是从做电子钟开始单片机入门的 3: 微电脑倒计时器微电脑倒计时器
;  FILE NAME:GJ-02.ASM

          ORG  0000H          ;程序入口地址
          AJMP MAIN
          ORG  0003H          ;外部中断INT0入口地址  
          AJMP PINT0          ;转中断服务子程序
          ORG  000BH          ;T0中断入口    
          AJMP WT0            ;定时器T0入口地址
          ORG  20H
MAIN:     MOV SP,#40H         ;设置栈指针
          MOV 20H,#0H         ;把定时数据单元清零   
          MOV 21H,#0          
          MOV 22H,#0     
          MOV 23H,#15     
          MOV 24H,#0     
          MOV TH0,#5          ;装入定时初值
          MOV TL0,#5   
          MOV TMOD,#02H       ;设T0为方式2
          SETB EA             ;开CPU中断
          SETB ET0            ;允许T0中断  
          CLR  TR0            ;启动T0计数  
          SETB IT0            ;设定INT0触发方式
          SETB EX0            ;INT0请求中断
          MOV 34H,#1
          MOV 35H,#5
          NOP                 ;第二位显示数据  │
M:        NOP        
          ACALL LED
          ACALL SON
          JNB 00H,M
MM:       NOP
          ACALL ZH1
          ACALL DSP
          ACALL LED
          AJMP M
;显示子程序
DSP:      MOV R7,#0AFH
DSP0:     MOV R0,#30H
          MOV DPTR,#TAB
          NOP
          MOV A,@R0
          MOVC A,@A+DPTR
RX1:      MOV P1,A
          CLR P3.0
          DJNZ R7,RX1
          MOV R7,#0afh
          INC R0
          MOV P1,#0FFH
          SETB P3.0
          MOV A,@R0
          MOVC A,@A+DPTR
RX2:      MOV P1,A
          CLR P3.1
          DJNZ R7,RX2
          MOV R7,#8
          SETB P3.1
;         DJNZ R7,DSP0
          RET
DSP1:     MOV R7,#0FH
DSP01:    MOV R0,#34H
          MOV DPTR,#TAB
          MOV A,@R0
          MOVC A,@A+DPTR
RX01:     MOV P1,A
          CLR P3.1
          DJNZ R7,$
          MOV R7,#0FH
          INC R0
          SETB P3.1
          MOV A,@R0
          MOVC A,@A+DPTR
          MOV P1,A
          CLR P3.0
          DJNZ R7,$
          SETB P3.0
          RET
ZH1:      MOV R2,#0
          MOV R3,23H
          ACALL BCD
          MOV A,R6
          ANL A,#0FH
          MOV 30H,A
          MOV A,R6
          ANL A,#0F0H
          SWAP A
          MOV 31H,A
          RET
;十进制转换为二进制子程序
DTOB:   
          MOV 32H,#0
          MOV 33H,#0
          MOV R0,#32H
          MOV R2,#3
          ACALL IDTB
          MOV A,R4
          MOV 23H,A
          RET
IDTB:     MOV   R3,#0
          MOV   A,@R0
          MOV   R4,A
IDTL:     MOV   A,R4
          MOV   B,#10
          MUL   AB
          MOV   R4,A
          MOV   B,#10
          XCH   A,B
          XCH   A,R3
          MUL   AB
          ADD   A,R3
          XCH   A,R4
          INC   R0
          ADD   A,@R0
          XCH   A,R4
          ADDC  A,#0
          MOV   R3,A
          DJNZ  R2,IDTL
          RET
;二进制数转换为十进制数子程序
BCD:      CLR   A       
          MOV   R4,A
          MOV   R5,A
          MOV   R6,A
          MOV   R7,#16
IBTL2:    CLR   C
          MOV   A,R3
          RLC   A
          MOV   R3,A
          MOV   A,R2
          RLC   A
          MOV   R2,A
          MOV   A,R6
          ADDC  A,R6
          DA    A
          MOV   R6,A
          MOV   A,R5
          ADDC  A,R5
          DA    A
          MOV   R5,A
          MOV   A,R4
          ADDC  A,R4
          DA    A
          MOV   R4,A
          DJNZ  R7,IBTL2
          RET
;延时子程序
DL:       MOV R7,#02H
DL1:      MOV R6,#0FFH
DL2:      DJNZ R6,DL2
          DJNZ R7,DL1
          RET
;外部中断服务子程序
PINT0:    CLR EX0
          PUSH ACC
          PUSH PSW
          SETB P3.5
          ACALL DSP1
PK:       JB P3.2,TOEXT
pk0:      acall DSP1       
          JNB P3.2,pk0
PK2:      JB P3.3,PK3      ;判K2按下否,未按则转到判K3状态   
          ACALL DSP1
          INC 34H
          MOV A,34H
          CJNE A,#0AH,PK22
          MOV 34H,#0
PK22:     ACALL DSP1       ;K2按下,30H加1
          JNB P3.3,PK22
          AJMP PK2
PK3:      ACALL DSP1
          JB P3.4,PK1      ;判K3按下否,未按则转到判K1状态   
          INC 35H
          MOV A,35H
          CJNE A,#0AH,PK33
          MOV 35H,#0
PK33:     ACALL DSP1
          JNB P3.4,PK33
          AJMP PK3
PK1:      ACALL DSP1
          JB P3.2,PK2       ;K1未按则转判K2和K3   
pk10:     acall DSP1  
          JNB P3.2,pk10
          ACALL DTOB
          SETB 00H
TOEXT:    SETB EX0          ;开中断
          SETB TR0
          POP PSW           ;恢复现场  
          POP ACC
          RETI
LED:      JB 01H,LED0
          CLR P3.5
          RET
LED0:     SETB P3.5
          RET
SON:      JB 02H,SON0
          CLR P3.7              ;
          RET
SON0:     SETB P3.7             ;
          RET    
;段码表
TAB:      DB 0C0H,0F9H,0A4H,0B0H,99H
          DB 92H,82H,0F8H,80H,90H
;定时中断服务子程序
WT0:      PUSH ACC
          PUSH PSW
          INC 21H              ;0.5ms
          MOV A,21H
          CJNE A,#0C8H,TORETI  ;200D=C8H
          MOV 21H,#0
          INC 22H    ;100ms
          MOV A,22H
          CJNE A,#10,TORETI
          MOV 22H,#0  
          DEC 23H
          MOV A,23H
;         CJNE A,#60,TORETI
;         MOV 23H,#0
;         DEC 24H
          CPL 01H
;         MOV A,24H
          CJNE A,#0,TORETI
          CLR TR0
          SETB 02H
          CLR 01H
          CLR 00H
TORETI:   POP PSW
          POP ACC
          RETI
          END
4: 确实也是哦谢谢哦。

我也觉得自己琢磨的程序应该更好

我自己回去琢磨琢磨!好好学学!!!

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]