有00—99的秒表电路吗
来源:学生作业帮 编辑:搜狗做题网作业帮 分类:综合作业 时间:2024/07/15 10:06:36
有00—99的秒表电路吗
单片机和程序
单片机和程序
00--99的秒表电路.你是要单片机做的还是要数字电路74LS161做的. S_SET BIT P1.0 ;数字钟秒控制位M_SET BIT P1.1 ;分钟控制位H_SET BIT P1.2 ;小时控制位 LED_BIT_1 EQU 30H ; 存放8位数码管的段码LED_BIT_2 EQU 31HLED_BIT_3 EQU 32HLED_BIT_4 EQU 33HLED_BIT_5 EQU 34HLED_BIT_6 EQU 35HLED_BIT_7 EQU 36HLED_BIT_8 EQU 37H ; SECOND EQU 60HMINUTE EQU 61HHOUR EQU 62HTCNT EQU 63H ORG 00H ;初始化程序 ,设置初始密码 SJMP START ORG 0BH LJMP INT_T0START: mov p3,00h MOV DPTR,#TABLE MOV HOUR,#0 MOV MINUTE,#0 MOV SECOND,#0 MOV TCNT,#0 MOV TMOD,#01H MOV TH0,#03ch ;定时50毫秒 MOV TL0,#03ch MOV IE,#082H SETB TR0 MOV LED_BIT_1,#00H ;段码存储区清0 MOV LED_BIT_2,#00H MOV LED_BIT_3,#00H MOV LED_BIT_4,#00H MOV LED_BIT_5,#00H MOV LED_BIT_6,#00H MOV LED_BIT_7,#79H MOV LED_BIT_8,#73H mov r0,11h mov r1,11h mov r2,11h MOV TMOD,#01H MOV TH0,#0fdh MOV TL0,#0fdh MOV IE,#82H LJMP A1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; A01: LCALL ds3 JNB S_SET,S01 JNB M_SET,S02 JNB H_SET,S03 ;调用时间显示 JB P1.4, A01 ljmp a1 S01: LCALL DLY_S ;去抖动 JB p1.0,A01 INC r0 ;秒值加1 MOV A, r0 CJNE A,#60,J000 ;判断是否加到60秒 MOV r0,#0 LJMP K001S02: LCALL DLY_S JB M_SET,A01 K001: INC r1 ;分钟值加1 MOV A, r1 CJNE A,#60,J001 ;判断是否加到60分 MOV r1,#0 LJMP K002S03: LCALL DLY_S JB H_SET,A01 K002: INC r2 ;小时值加1 MOV A,r2 CJNE A,#24,J002 ;判断是否加到24小时 MOV r0,#0 MOV r1,#0 MOV r2,#0 LJMP A01J000: JB p1.0,A01 ;等待按键抬起 LCALL ds3 SJMP J000J001: JB M_SET,A01 LCALL ds3 SJMP J001J002: JB H_SET,A01 LCALL ds3 SJMP J002 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; A1: LCALL DISPLAY ;调用时间显示 clr p3.0 JNB S_SET,S1 JNB M_SET,S2 JNB H_SET,S3 JNB P1.4 ,a01 mov a,r2 cjne a, HOUR,A1111 mov a ,r1 cjne a, MINUTE,A1111 setb p3.0 A1111: JB P1.3, A1 LCALL A0 LJMP A1S1: LCALL DLY_S ;去抖动 JB S_SET,A1 INC SECOND ;秒值加1 MOV A, SECOND CJNE A,#60,J00 ;判断是否加到60秒 MOV SECOND,#0 LJMP K01S2: LCALL DLY_S JB M_SET,A1 K01: INC MINUTE ;分钟值加1 MOV A, MINUTE CJNE A,#60,J01 ;判断是否加到60分 MOV MINUTE,#0 LJMP K02S3: LCALL DLY_S JB H_SET,A1 K02: INC HOUR ;小时值加1 MOV A,HOUR CJNE A,#24,J02 ;判断是否加到24小时 MOV HOUR,#0 MOV MINUTE,#0 MOV SECOND,#0 LJMP A1J00: JB S_SET,A1 ;等待按键抬起 LCALL DISPLAY SJMP J00J01: JB M_SET,A1 LCALL DISPLAY SJMP J01J02: JB H_SET,A1 LCALL DISPLAY SJMP J02 INT_T0: MOV TH0,#3ch ;定时器中断服务程序 MOV TL0,#3ch ;对秒,分钟和小时的计数 INC TCNT MOV A,TCNT CJNE A,#20,RETUNE ;计时1秒 INC SECOND MOV TCNT,#0 MOV A,SECOND CJNE A,#60,RETUNE INC MINUTE MOV SECOND,#0 MOV A,MINUTE CJNE A,#60,RETUNE INC HOUR MOV MINUTE,#0 MOV A,HOUR CJNE A,#24,RETUNE MOV HOUR,#0 MOV MINUTE,#0 MOV SECOND,#0 MOV TCNT,#0RETUNE: RETI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;DIS3闹铃设置子程序 DS3: MOV A,r0 ;显示毫秒 MOV B,#10 DIV AB CLR P2.6 MOVC A,@A+DPTR MOV P0,A LCALL DLY_S SETB P2.6 MOV A,B CLR P2.7 MOVC A,@A+DPTR MOV P0,A LCALL DLY_S SETB P2.7 CLR P2.5 MOV P0,#40H ;显示分隔符 LCALL DLY_S SETB P2.5 MOV A,r1 ;显示分钟 MOV B,#10 DIV AB CLR P2.3 MOVC A,@A+DPTR MOV P0,A LCALL DLY_S SETB P2.3 MOV A,B CLR P2.4 MOVC A,@A+DPTR MOV P0,A LCALL DLY_S SETB P2.4 CLR P2.2 MOV P0,#40H ;显示分隔符 LCALL DLY_S SETB P2.2 MOV A,r2 ;显示shi MOV B,#10 DIV AB CLR P2.0 MOVC A,@A+DPTR MOV P0,A LCALL DLY_S SETB P2.0 MOV A,B CLR P2.1 MOVC A,@A+DPTR MOV P0,A LCALL DLY_S SETB P2.1 RET ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;DIS3DISPLAY: ;显示时间控制子程序 MOV A,SECOND ;显示秒 MOV B,#10 DIV AB CLR P2.6 MOVC A,@A+DPTR MOV P0,A LCALL DLY_S SETB P2.6 MOV A,B CLR P2.7 MOVC A,@A+DPTR MOV P0,A LCALL DLY_S SETB P2.7 CLR P2.5 MOV P0,#40H ;显示分隔符 LCALL DLY_S SETB P2.5 MOV A,MINUTE ;显示分钟 MOV B,#10 DIV AB CLR P2.3 MOVC A,@A+DPTR MOV P0,A LCALL DLY_S SETB P2.3 MOV A,B CLR P2.4 MOVC A,@A+DPTR MOV P0,A LCALL DLY_S SETB P2.4 CLR P2.2 MOV P0,#40H ;显示分隔符 LCALL DLY_S SETB P2.2 MOV A,HOUR ;显示小时 MOV B,#10 DIV AB CLR P2.0 MOVC A,@A+DPTR MOV P0,A LCALL DLY_S SETB P2.0 MOV A,B CLR P2.1 MOVC A,@A+DPTR MOV P0,A LCALL DLY_S SETB P2.1 &nbs