收藏 分销(赏)

51单片机实验代码.doc

上传人:w****g 文档编号:3066587 上传时间:2024-06-14 格式:DOC 页数:34 大小:288.04KB 下载积分:12 金币
下载 相关 举报
51单片机实验代码.doc_第1页
第1页 / 共34页
51单片机实验代码.doc_第2页
第2页 / 共34页


点击查看更多>>
资源描述
实验二 清零程序 一、 实验目的 掌握汇编语言设计和调试方法,熟悉键盘操作。 二、 实验内容 把2000H~20FFH的内容清零。 三、 实验程序框图 四、 实验步骤 用连续或单步的方式运行程序,检查2000~20FF中执行程序前后的内容变化。 五、 思考 假使把2000H~20FFH中的内容改成FF,如何修改程序。 六、 程序清单 文件名: SW01.ASM ORG 0000H LJMP SE01 ORG 0640H SE01: MOV R0,#00H MOV DPTR,#2000H ;(0000H)送DPTR LOO1: CLR A MOVX @DPTR,A ;0送(DPTR) INC DPTR ;DPTR+1 INC R0 ;字节数加1 CJNE R0,#00H,LOO1 ;不到FF个字节再清 LOOP: SJMP LOOP END 实验三 拆字程序 一、实验目的 掌握汇编语言设计和调试方法 二、实验内容 把2000H的内容拆开,高位送2001H低位,低位送2002H低位,2001H、2002H高位清零,一般本程序用于把数据送显示缓冲区时用。 三、实验程序框图 开 始 2000H内容送A 高地位交换 屏蔽高位后送2001H 2000H内容送A 屏蔽高位后送2002H 结束 四、实验步骤 用连续或单步方式运行程序,检查2000H~2002H中内容变化情况。 五、思考 如何用断点方式调试本程序 六、程序清单 文件名:SW02.ASM ORG 0000H LJMP SE02 ORG 0660H SE02: MOV DPTR,#2000H MOVX A,@DPTR MOV B,A ;(2000)→A→B SWAP A ;交换 ANL A,#0FH ;屏蔽高位 INC DPTR MOVX @DPTR,A ;送2001H INC DPTR MOV A,B ANL A,#0FH ;(2000)内容屏蔽高位 MOVX @DPTR,A ;送2002H LOOP: JMP LOOP END 实验四 数据区传送子程序 一、 实验目的 掌握RAM中的数据操作 二、 实验内容 把R2、R3源RAM区首地址内的R6、R7字节数据传送到R4、R5目的RAM区。 三、 实验程序框图 开 始 源地址内容送A (A)送目的地址 源地址加1 目的地址加1 字节数到么? 结 束 N 四、 实验步骤 在R2、R3中输入源首址(例如0000H),R4、R5中输入的目的地址(例如2000H),R6、R7中输入字节数(例如1FFFH),运行程序,检查0000H~1FFFH中内容是否和2000H~3FFFH中内容完全一致。 五、 程序清单 文件名 SW04.ASM ORG 0000H LJMP SE22 ORG 07B0H SE22: MOV DPL,R3 MOV DPH,R2 ;建立源程序首址 MOVX A,@DPTR ;取数 MOV DPL,R5 MOV DPH,R4 ;目的地首址 MOVX @DPTR,A ;传送 CNE R3,#0FFH,LO42 INC R2 LO42: INC R3 ;源地址加1 CJNE R5,#0FFH,LO43 INC R4 LO43: INC R5 ;目的地址加1 CJNE R7,#00H,LO44 CJNE R6,#00H,LO45 ;字节数减1 LOOP: SJMP LOOP NOP LO44: DEC R7 SJMP SE22 LO45: DEC R7 DEC R6 SJMP SE22 ;未完继续 END 实验五 简单I/O口应用 一、 实验目的 掌握P1口作为I/O口的使用方法,理解读引脚和读锁存器的区别。 二、 实验要求 运行不同的程序,观察发光二极管的亮灭状态,比较程序的特点,了解汇编语言设计的基本思路和指令应用。 三、 思想描述 流程图: 结束 开始 读P3.4的脚 P3.4接地 点亮8个LED 8个LED交叉亮灭 程序流程图 开始 立即数00H送P1口,点亮8个发光二极管 延时 立即数0FFH送P1口,熄灭8个发光二极管 延时 结束 ;------------------------------------------------------ ;程序:所有发光二极管不停地闪动 ;-------------------- ---------------------------------- LED_PORT EQU P1 ORG 0000H ;程序从地址0000H开始存放 LJMP START ORG 0100H START: CLR EA ;关闭所有中断 MOV LED_PORT,#00H ;点亮所有发光二极管 LCALL DELAY ;延时 MOV LED_PORT,#0FFH ;灭掉所有发光二极管 LCALL DELAY SJMP START ;重复闪动 DELAY: MOV R3,#7FH ;延时子程序 DEL2: MOV R4,#0FFH DEL1: NOP DJNZ R4,DEL1 DJNZ R3,DEL2 RET END ;------------------------------------------------------ ;程序:用于关控制发二极管的显示方式 ;------------------------------------------------------ LED_PORT EQU P1 ORG 0000H LJMP START ORG 0100H START: CLR EA ;关闭所有中断 MOV P3,#11111111B ;使P3口锁存器置位 MOV A,P3 ;读P3口引脚线信号 ANL A,#00010000B ;逻辑与操作,屏蔽掉无关位 JZ DDPING ;判断P3.4是否接地,若是,跳转到DDPING执行 MOV LED_PORT,#00H ;否则,P3.4高电平,点亮所有发光二极管 SJMP START DDPING: MOV LED_PORT,#55H ;P3.4接地,发光二极管交叉亮灭 SJMP START END 实验六 P3口输入P1口输出实验 一、 实验目的 P3口输入P1口输出,实现I/O控制。 二、 实验要求 撰写实验报告,给出输入输出实现方式,画出实验原理图,给出程序流程及实现的全部代码。 三、 思想描述: 系统板上硬件连线 (1. 把“单片机系统”区域中的P0.0-P0.7端口用8芯排线连接到“动态静态数码显示模块”区域中的a-h端口上;要求:P0.0对应着a,P0.1对应着b,……,P0.7对应着h。 (2. 把“单片机系统”区域中的P2.0端口用8芯排线连接到“动态数码显示模块”区域中的任一个公共端上。 实验原理 AT89S51单片机的内部16位定时/计数器是一个可编程定时/计数器,它既可以工作在13位定时方式,也可以工作在16位定时方式和8位定时方式。只要通过设置特殊功能寄存器TMOD,即可完成。定时/计数器何时工作也是通过软件来设定TCON特殊功能寄存器来完成的。 现在我们选择16位定时工作方式,对于T0来说,最大定时也只有65536us,即65.536ms,无法达到我们所需要的1秒的定时,因此,我们必须通过软件来处理这个问题,假设我们取T0的最大定时为50ms,即要定时1秒需要经过20次的50ms的定时。对于这20次我们就可以采用软件的方法来统计了。 因此,我们设定TMOD=00000001B,即TMOD=01H 下面我们要给T0定时/计数器的TH0,TL0装入预置初值,通过下面的公式可以计算出 TH0=(216-50000) / 256 TL0=(216-50000) MOD 256 当T0在工作的时候,我们如何得知50ms的定时时间已到,这回我们通过检测TCON特殊功能寄存器中的TF0标志位,如果TF0=1表示定时时间已到。 实验结果 汇编源程序(查询法) SECOND EQU 30H TCOUNT EQU 31H ORG 00H START: SETB P2.0 MOV SECOND,#00H MOV TCOUNT,#00H MOV TMOD,#01H MOV TH0,#(65536-50000) / 256 MOV TL0,#(65536-50000) MOD 256 SETB TR0 DISP: MOV A,SECOND ANL A,#0FH MOV DPTR,#TABLE MOVC A,@A+DPTR MOV P0,A WAIT: JNB TF0,WAIT CLR TF0 MOV TH0,#(65536-50000) / 256 MOV TL0,#(65536-50000) MOD 256 INC TCOUNT MOV A,TCOUNT CJNE A,#20,NEXT MOV TCOUNT,#00H INC SECOND MOV A,SECOND CJNE A,#60,NEX MOV SECOND,#00H NEX: LJMP DISP NEXT: LJMP WAIT TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH END 汇编源程序(中断法) SECOND EQU 30H TCOUNT EQU 31H ORG 00H LJMP START ORG 0BH LJMP INT0X START: SETB P2.0 MOV SECOND,#00H MOV A,SECOND ANL A,#0FH MOV DPTR,#TABLE MOVC A,@A+DPTR MOV P0,A MOV TCOUNT,#00H MOV TMOD,#01H MOV TH0,#(65536-50000) / 256 MOV TL0,#(65536-50000) MOD 256 SETB TR0 SETB ET0 SETB EA SJMP $ INT0X: MOV TH0,#(65536-50000) / 256 MOV TL0,#(65536-50000) MOD 256 INC TCOUNT MOV A,TCOUNT CJNE A,#20,NEXT MOV TCOUNT,#00H INC SECOND MOV A,SECOND ANL A,#0FH MOV DPTR,#TABLE MOVC A,@A+DPTR MOV P0,A NEXT: RETI TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH END 实验7外部中断实验 一、 实验目的 中断实验输出控制,学习中断程序设计方法,理解中断机制理解下降沿中断和低电平中断的区别。 二、 实验要求 编写主程序 实现系统的初始化,若有不同的初始化方式,应有状态指示;编写中断服务程序,服务程序操作以能明确判断发生一次中断为准,且有声光指示作为人机界面。实验前必须认真复习中断相关内容,并在实验报告上写出预习报告,给出实验方案,经过实验指导教师检查合格后,方可进行实验。实验结束后撰写实验报告画出实验原理图,给出程序流程及实现的全部代码。 实验原理 用8051单片机设计一交通信号灯模拟控制系统,能够完成正常情况下的轮流放行以及特殊情况和紧急情况下的红绿灯控制 1.掌握单片机中断系统、定时/计数器的编程应用。 2.通过对交通灯控制程序的编写与调试,掌握中断程序的结构。 3.正常情况下A、B道(A、B道交叉组成十字路口,A是主道,B是支道)轮流放行,A道放行1分钟(其中5秒用于警告),B道放行30秒(其中5秒用于警告)。 4.一道有车而另一道无车时,使有车车道放行,K5键按下表示A道有车,K1键按下表示B道有车。 5.K9键按下表示有紧急车辆通过时,A、B道均为红灯。 控制码表 P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0 控制码 (P1口数据) 状态说明 (空) (空) B线 绿灯 B线 黄灯 B线 红灯 A线 绿灯 A线 黄灯 A线 红灯 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 0 0 0 1 1 0 1 1 1 1 0 1 1 1 1 0 0 F3H F5H DEH EEH A线放行,B线禁止 A线警告,B线禁止 A线禁止,B线放行 A线禁止,B线警告 (二) 实验连线表 单片机 发光二极管 按键 连接1 P1.0-P1.5 L0-L5 连接2 INT0 KR1 连接3 T0 KR2 连接4 T1 KR3 连接5 INT1 (三)实验结果 交通信号灯模拟控制系统程序流程图 程序: BANK0_REG EQU 00H ;选择第0组寄存器 BANK1_REG EQU 08H ;选择第1组寄存器 BANK2_REG EQU 10H ;选择第2组寄存器 BANK3_REG EQU 18H ;选择第3组寄存器 ORG 0000H LJMP MAIN ;指向主程序 ORG 0003H LJMP EMERG ;指向紧急车辆出现中断程序 外部中断0 ORG 0013H LJMP ONEBUSY ;指向一道有车另一道无车中断程序 外部中断1 ORG 0100H MAIN: MOV PSW,#BANK0_REG MOV SP,#0DFH SETB PX0 ;置外部中断0为高优先级中断 MOV TCON,#00H ;置外部中断0,1为电平触发 MOV TMOD,#10H ;置定时器1为方式1 MOV IE,#85H ;开CPU中断,开外中断0,1中断 DISP: MOV P1,#0F3H ;A绿灯放行,B红灯禁止 MOV R2,#6EH ;置0.5秒循环次数 DISP1: LCALL DELAY ;调用0.5秒延时子程序 DJNZ R2,DISP1 ;55秒不到继续循环 MOV R2,#06 ;置A绿灯闪烁循环次数 WARN1: CPL P1.2 ;A绿灯闪烁 LCALL DELAY DJNZ R2,WARN1 ;闪烁次数未到继续循环 MOV P1,#0F5H ;A黄灯警告,B红灯禁止 MOV R2,#04H YEL1: LCALL DELAY DJNZ R2,YEL1 ;2秒未到继续循环 MOV P1,#0DEH ;A红灯,B绿灯 MOV R2,#32H DISP2: LCALL DELAY DJNZ R2,DISP2 ;25秒未到继续循环 MOV R2,#06H WARN2: CPL P1.5 ;B绿灯闪烁 LCALL DELAY DJNZ R2,WARN2 MOV P1,#0EEH ;A红灯,B黄灯 MOV R2,#04H YEL2: LCALL DELAY DJNZ R2,YEL2 LJMP DISP ;循环执行主程序 ;---------------------------------------------- ;紧急情况中断子程序 ;---------------------------------------------- EMERG: PUSH P1 ;P1口数据压栈 PUSH 03H ;R3寄存器压栈 PUSH TH1 ;TH1压栈 PUSH TL1 ;TL1压栈 MOV P1,#0F6H ;A,B道均为红灯 MOV R5,#28H ;置0.5秒循环初值 DELAY0: LCALL DELAY DJNZ R5,DELAY0 ;20秒未到继续循环 POP TL1 ;弹栈恢复现场 POP TH1 POP 03H POP P1 RETI ;返回主程序 ;---------------------------------------------- ;路有车一路无车中断子程序ONEBUSY ;---------------------------------------------- ONEBUSY: CLR EA ;关中断 PUSH P1 ;压栈 PUSH 03H PUSH TH1 PUSH TL1 SETB EA ;开中断 JNB P3.4,BP ;A道无车转向 MOV P1,#0F3H ;A绿灯,B红灯 SJMP DELAY1 ;转向5秒延时 BP: JNB P3.5,EXIT ;B道无车退出中断 MOV P1,#0DEH ;A红灯,B绿灯 DELAY1: MOV R6,#0AH ;置0.5秒循环初值 NEXT: LCALL DELAY DJNZ R6,NEXT ;5秒未到继续循环 EXIT: CLR EA POP TL1 ;弹栈恢复现场 POP TH1 POP 03H POP P1 SETB EA RETI ;---------------------------------------------- ;0.5S延时子程序 ;---------------------------------------------- DELAY: MOV R3,#0AH MOV TH1,#3CH MOV TL1,#0B0H SETB TR1 LP1: JBC TF1,LP2 SJMP LP1 LP2: MOV TH1,#3CH MOV TL1,#0B0H DJNZ R3,LP1 RET END 实验八 定时器/计数器应用试验 一、 实验目的 掌握定时器/计数器编程方法,掌握相关寄存器的初始化及其意义;理解定时器/计数器的本质,掌握定时器/计数器应用的两种方法:查询和中断。 二、 实验要求 利用定时器实现一秒定时,或计数外部脉冲,分别采用查询和中断两种方式实现,加深对中断的理解加强对相关寄存器各个位的灵活应用能力。人机界面方案自行设计。实验前必须认真复习定时计数器相关内容,并在实验报告上写出定时计数器的初始化步骤,给出人机界面实现方案,经过实验指导教师检查合格后,方可进行试验。实验结束后撰写实验报告画出实验原理图,给出程序流程及实现的全部代码。 实验连线表 单片机 MC8 按键 +5V/GND +5V/GND +5V/GND P1.0 SCL P1.1 SDA GND KC1 P1.2 KR1 P1.3 KR2 P1.4 KR3 P1.5 (三)程序流程图 闹钟修改功能子程序FTION1流程框图 主程序MAIN流程框图 时钟修改功能子程序FTION0流程框图 时钟修正中断服务子程序CLOCK流程框图 加1键修改子程序CUM流程框图 程序清单: ;-------------------------------------------------------------- ;-------------------数字时钟制作---------------------------- ;-------------------------------------------------------------- BANK0_REG EQU 00H ;选择第0组寄存器 BANK1_REG EQU 08H ;选择第1组寄存器 BANK2_REG EQU 10H ;选择第2组寄存器 BANK3_REG EQU 18H ;选择第3组寄存器 LED_MAX_BITS EQU 06H ;LED最大位数 LED_SCL EQU P1.0 LED_SDA EQU P1.1 HD_K0 EQU P1.2 HD_K1 EQU P1.3 HD_K2 EQU P1.4 HD_CBP EQU P1.5 K0_FLAG EQU 00H K1_FLAG EQU 01H K2_FLAG EQU 02H SEC_FLAG EQU 03H ;定义各标识位符号地址 MIN_FLAG EQU 04H HOUR_FLAG EQU 05H RMIN_FLAG EQU 06H RHOUR_FLAG EQU 07H RTIM_FLAG EQU 08H ARM_FLAG EQU 09H ;是否设定闹钟标识 TIMDATA EQU 30H ;时钟修改记忆单元 RTIMDATA EQU 31H ;闹钟修改记忆单元清零 MSEC1 EQU 32H MSEC2 EQU 33H HOUR EQU 34H MIN EQU 35H SEC EQU 36H RHOUR EQU 37H RMIN EQU 38H RSEC EQU 39H COUNT EQU 3AH LED_DIS_PTR EQU 3BH ORG 0000H LJMP MAIN ORG 000BH LJMP TIMER_INT ;定时器中断服务程序 ORG 0100H MAIN: CLR EA MOV PSW,#BANK0_REG MOV SP,#0DFH MOV R0,#20H MOV R7,#80H-20H LCALL PUB_CLEAR_RAM1 ;清0RAM单元 LCALL LED_CLR MOV LED_DIS_PTR,#HOUR LCALL LED_DISP_DATA MOV TMOD,#02H ;定时器T0方式2, MOV TL0,#06H ;定时250us初始值 MOV TH0,#06H SETB EA ;中断允许 SETB ET0 SETB TR0 ;启动定时器 BEGIN: LCALL KEY_TEST ;调用判别键入测试程序 JC RETEST ;有键输入则转去抖程序 JNB ARM_FLAG,BEGIN ;判别闹钟设定标识位,未设定则返回 LCALL ALARM ;调闹钟程序 LJMP BEGIN ;返回 RETEST: LCALL KEY_SCAN JB K0_FLAG,PRO_K0 ; 判别是否时钟修改功能键 JB K1_FLAG,PRO_K1 ; 判别是否闹钟修改功能键 JB K2_FLAG,PRO_K2 ; 判别是否加1功能键 SJMP BEGIN PRO_K0: LCALL FTION0 ; 是时钟参数修改功能键则调用时钟修改程序 SJMP BEGIN PRO_K1: LCALL FTION1 ; 是闹钟参数修改功能键则调用闹钟设定程序 SJMP BEGIN PRO_K2: LCALL CUM ; 是加1功能键则调用加1修改程序 SJMP BEGIN ;-------------------------------------------------- ;时钟参数修改子程序FTION0 ;功能:根据时钟修改功能键按下的次数 ;分别将时钟修改标识位SECBIT, MIN_FLAG,HOURBIT置1 ;入口:TIMDAT ;出口:TIMDAT ;-------------------------------------------------- FTION0: JB RMIN_FLAG,BACK_B JB RHOUR_FLAG,BACK_B ;当正在设置闹钟不能设置时间,需先结束闹钟设置状态 CLR TR0 ;关定时器 CLR SEC_FLAG ;时钟秒标识位清零 CLR MIN_FLAG ;时钟分标识位清零 CLR HOUR_FLAG ;时钟小时标识位清零 MOV LED_DIS_PTR,#HOUR ;将时钟小时单元设为显示首地址 MOV RTIMDATA,#00H ;清闹钟修改位置标识记录 INC TIMDATA ;将时钟修改记录值加1 MOV A,TIMDATA CJNE A,#01H,TW0 ;若记录值为1则将时钟秒修改标识置1 SETB SEC_FLAG ;时钟秒标识位置1 SJMP BACK_C TW0: CJNE A,#02H,THREE0 ;若记录值为2则将时钟分修改标识置1 SETB MIN_FLAG ;时钟分标识位置1 SJMP BACK_C THREE0: CJNE A,#03H,BACK_A ;若记录值为3则将时钟小时修改标识置1 SETB HOUR_FLAG ;时钟小时标识位置1 SJMP BACK_C BACK_A: MOV TIMDATA,#00H ;若按4次则清时钟单元修改位置记录 SETB TR0 ;定时器重新启动 BACK_B: RET BACK_C: LCALL LED_DISP_DATA RET ;-------------------------------------------------- ;闹钟参数修改功能键设定子程序FTION1 ;功能:根据闹钟修改功能键按下的次数 ;分别将闹钟修改标识位RMINBIT ,RHOURBIT置1 ;入口:RTIMDAT ;出口:RTIMDAT,ARM_FLAG,B ;-------------------------------------------------- FTION1: JB SEC_FLAG,FTION1_A JB MIN_FLAG,FTION1_A JB HOUR_FLAG,FTION1_A ;当处于设置时间状态时不能设置闹钟,需先结束时间设置状态 CLR RMIN_FLAG ;将闹钟分单元修改标识位 CLR RHOUR_FLAG ;将闹钟小时单元修改标识位清零 MOV LED_DIS_PTR,#RHOUR ;将闹钟单元地址设为显示首地址 MOV TIMDATA,#00H INC RTIMDATA ;将闹钟修改记录值加1 MOV A,RTIMDATA CJNE A,#01H,TOW1 SETB RMIN_FLAG ;若记录值为1则将闹钟分单元修改标识位 LJMP FTION1_B ;置1 TOW1: CJNE A,#02H,THREE1 SETB RHOUR_FLAG ; 若记录值为2,将闹钟小时单元修改标识位置1 LJMP FTION1_B THREE1: SETB ARM_FLAG ;F0标识位为1表示闹钟已设定 MOV LED_DIS_PTR,#HOUR ;恢复时钟显示单元首地址 MOV RTIMDATA,#00H ;将闹钟修改记录值清零 FTION1_A: RET FTION1_B: LCALL LED_DISP_DATA RET ;--------------------------------------------------------------- ;加1键修改子程序CUM ;功能:根据时钟和闹钟修改标识位的状态,将时钟或闹钟对应RAM内容+1 ;入口:SEC_FLAG, MIN_FLAG ,HOUR_FLAG,RSECBIT, RMIN_FLAG ,RHOUR_FLAG ;--------------------------------------------------------------- CUM: JNB SEC_FLAG,CUM0 ;若时钟秒修改标识位为1则秒单元内 MOV A,SEC ;容加1 ADD A,#01H DA A MOV SEC,A CJNE A,#60H,CUMEND MOV SEC,#00H LJMP CUMEND CUM0: JNB MIN_FLAG,CUM1 ;若时钟分修改标识位为1,则分单元 MOV A,MIN ;内容加1 ADD A,#01H DA A MOV MIN,A CJNE A,#60H,CUMEND MOV MIN,#00H LJMP CUMEND CUM1: JNB HOUR_FLAG,CUM2 ;若时钟小时修改标识位为1,则小时 MOV A,HOUR ;单元内容加1 ADD A,#01H DA A MOV HOUR,A CJNE A,#24H,CUMEND MOV HOUR,#00H LJMP CUMEND CUM2: JNB RMIN_FLAG,CUM3 ;若闹钟分修改标识位为1,则分单元 MOV A,RMIN ;内容加1 ADD A,#01H DA A MOV RMIN,A CJNE A,#60H,CUMEND MOV RMIN,#00H LJMP CUMEND CUM3: JNB RHOUR_FLAG,CUMEND ;若闹钟小时修改标识位为1,则小 MOV A,RHOUR ;时单元内容加1 ADD A,#01H DA A MOV RHOUR,A CJNE A,#24H,CUMEND MOV RHOUR,#00H CUMEND: LCALL LED_DISP_DATA RET ;-------------------------------------------------- ;闹钟判断与启动子程序ALARM ;功能:判断闹钟是否设定,控制闹钟的启,停 ;入口:MIN ,RMIN ,HOUR ,RHOUR ;出口:HD_BP,ARM_FLAG ;-------------------------------------------------- ALARM: MOV A,RMIN CJNE A,MIN,DONT0 ;比较分单元内容,若相同则继续比较小时单 MOV A,RHOUR ;元内容,否则返回 CJNE A,HOUR,DONT0 CLR HD_CBP ;启动闹钟 SETB RTIM_FLAG ;设置闹钟计时标时,时钟开始10秒计时 DONT0: MOV A,COUNT ;取闹钟保持计时时间 CJNE A,#10,DONT ;判断闹钟保持10秒时间到否 MOV COUNT,#00H ;清除闹钟保持10秒计时 SETB HD_CBP ;清除闹钟 CLR ARM_FLAG ;清闹钟标识,取消闹钟设置 CLR RTIM_FLAG ;清闹钟计时标识, DONT: RET ;-------------------------------------------------- ;时钟修正中断服务子程序 ;功能:通过定时器中断,自动修改时钟参数 ;入口:MSEC1 ,MSEC2,,SEC,MIN,HOUR ;出口:MSEC1 ,MSEC2,,SEC,MIN,HOUR ;-------------------------------------------------- TIMER_INT: CLR EA ; 关中断
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服