单片机系统设计.ppt_第1页
单片机系统设计.ppt_第2页
单片机系统设计.ppt_第3页
单片机系统设计.ppt_第4页
单片机系统设计.ppt_第5页
已阅读5页,还剩80页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、,系统设计(步骤): 1、技术指标(功能设计): 为企业完成技术改造,企业会提出技术指标。 开发新产品则先行设计产品功能。,系统设计(步骤): 1、技术指标(功能设计): 为企业完成技术改造,企业会提出技术指标。 开发新产品则先行设计产品功能。 例如开发一个新型电子钟,它的功能归纳为: 走时准确,能自动校时。 6位显示,能显示时、分、秒。 能手动校时。 能设定作息时间表。,系统设计(步骤): 1、技术指标(功能设计): 为企业完成技术改造,企业会提出技术指标。 开发新产品则先行设计产品功能。 例如开发一个新型电子钟,它的功能归纳为: 走时准确,能自动校时。 6位显示,能显示时、分、秒。 能手动

2、校时。 能设定作息时间表。,2、操作手册设计。设计的依据是“技术指标”。,系统设计(步骤): 1、技术指标(功能设计): 为企业完成技术改造,企业会提出技术指标。 开发新产品则先行设计产品功能。 例如开发一个新型电子钟,它的功能归纳为: 走时准确,能自动校时。 6位显示,能显示时、分、秒。 能手动校时。 能设定作息时间表。,2、操作手册设计。设计的依据是“技术指标”。 基本操作设计: 电子钟三个工作状态:时钟状态;校时状态;设时状态。 校时状态下的操作。校时对象选择;校准操作。 设时状态下的操作。设时对象选择:第i个作息时间、时钟、分钟;设置作息时间的操作。,2、操作手册设计。设计的依据是“技

3、术指标”。 基本操作设计: 电子钟三个工作状态:时钟状态;校时状态;设时状态。 校时状态下的操作。校时对象选择;校准操作。 设时状态下的操作。设时对象选择:第i个作息时间、时钟、分钟;设置作息时间的操作。 需要三个键k1、k2、k3实施基本操作: k1为状态键、k2为选择键、k3为操作键。,2、操作手册设计。设计的依据是“技术指标”。 基本操作设计: 电子钟三个工作状态:时钟状态;校时状态;设时状态。 校时状态下的操作。校时对象选择;校准操作。 设时状态下的操作。设时对象选择:第i个作息时间、时钟、分钟;设置作息时间的操作。 需要三个键k1、k2、k3实施基本操作: k1为状态键、k2为选择键

4、、k3为操作键。 操作手册 按k1切换电子钟工作状态:时钟状态、校时状态、设时状态依次循环。 时钟状态下显示即时时钟。 校时状态下也显示即时时钟,但“时钟”闪烁。 设时状态下最高两位显示器显示作息时间序号i并且闪烁。其他四位显示器显示第i个作息时间的时和分。,2、操作手册设计。设计的依据是“技术指标”。 基本操作设计: 电子钟三个工作状态:时钟状态;校时状态;设时状态。 校时状态下的操作。校时对象选择;校准操作。 设时状态下的操作。设时对象选择:第i个作息时间、时钟、分钟;设置作息时间的操作。 需要三个键k1、k2、k3实施基本操作: k1为状态键、k2为选择键、k3为操作键。 操作手册 按k

5、1切换电子钟工作状态:时钟状态、校时状态、设时状态依次循环。 时钟状态下显示即时时钟。 校时状态下也显示即时时钟,但“时钟”闪烁。 设时状态下最高两位显示器显示作息时间序号i并且闪烁。其他四位显示器显示第i个作息时间的时和分。 校时状态下进行校时。 设时状态下进行作息时间设定。,操作手册 按k1切换电子钟工作状态:时钟状态、校时状态、设时状态依次循环。 时钟状态下显示即时时钟。 校时状态下显示即时时钟,但“时钟”闪烁。 设时状态下最高两位显示器显示作息时间序号i并且闪烁。其他四位显示器显示第i个作息时间的时和分。 校时状态下对闪烁部分进行校准。 按K2切换校时对象:时钟、分钟、秒钟依次循环,选

6、定的校时对象闪烁。 按k3修改校时对象:按k3一次,校时对象增值1。 按k1切换出校时状态。,操作手册 。 设时状态下最高两位显示器显示作息时间序号i并且闪烁。其他四位显示器显示第i个作息时间的时和分。 校时状态下对闪烁部分进行校准。 按K2切换校时对象:时钟、分钟、秒钟依次循环,选定的校时对象闪烁。 按k3修改校时对象:按k3一次,校时对象增值1。 按k1切换出校时状态。 设时状态下对闪烁部分进行作息时间设定。 按K2切换“设时状态”下的操作对象:作息时间序号、作息时间的时钟、作息时间的分钟依次循环,选定的操作对象闪烁。 按k3修改“设时状态”下的操作对象:按k3一次,操作对象增值1。 按k

7、1切换出设时状态。,2、操作手册设计 按k1切换电子钟工作状态:时钟状态、校时状态、设时状态依次循环。 时钟状态下显示即时时钟。 校时状态下显示即时时钟,但“时钟”闪烁。 设时状态下最高两位显示器显示作息时间序号i并且闪烁。其他四位显示器显示第i个作息时间的时和分。 校时状态下对闪烁部分进行校准。 按K2切换校时对象:时钟、分钟、秒钟依次循环选择,选定的校时对象闪烁。 按k3修改校时对象:按k3一次,校时对象增值1。 按k1切换出校时状态。 设时状态下对闪烁部分进行作息时间设定。 按K2切换“设时状态”下的操作对象:作息时间序号、作息时间的时、作息时间的分依次循环选择,选定的操作对象闪烁。 按

8、k3修改“设时状态”下的操作对象:按k3一次,操作对象增值1。 按k1切换出设时状态。,系统设计(步骤): 1、技术指标(功能设计): 走时准确,能自动校时。 6位显示,能显示时、分、秒。 能手动校时。 能设定作息时间表。 2、操作手册设计 3、硬件设计 总体设计 设计专门的“自动校时模块”确保走时准确;采用6位8段LED显示器动态显示以节省成本;用3个键实现电子钟的操作;扩展4KB程序存储器。 逻辑电路设计,电子钟逻辑电路图,电子钟逻辑电路图(左上),k1为状态键; k2为选择键; k3为操作键。,电子钟逻辑电路图(左下),自动校时模块有两个输出:。 一个在正点附近输出5个脉冲, 即图中的A

9、otu- regulator input1 另一个正点输出1个脉冲,即图 中的Auto-regulator input2。,电子钟逻辑电路图(左下),自动校时模块有两个输出:。 一个在正点附近输出5个脉冲, 即图中的Aotu- regulator input1 另一个正点输出1个脉冲,即图 中的Auto-regulator input2。,电子钟逻辑 电路图 (中部),U3位图: . xx00000000000000 . xx01111111111111,U3地址: . 0000H1FFFH,电子钟逻辑 电路图 (中部),U4位图: . x1xxxxxxxxxxxxxx,电子钟逻辑 电路图 (

10、中部),U4位图: . x1xxxxxxxxxxxxxx,U5位图: . 1xxxxxxxxxxxxxxx,电子钟逻辑 电路图 (中部),U4位图: . x1xxxxxxxxxxxxxx,U5位图: . 1xxxxxxxxxxxxxxx,综合考虑 , U4地址: 。 01xxxxxxxxxxxxxx U5地址: 。 10 xxxxxxxxxxxxxx U4地址取4000H U5地址取8000H,电子钟逻辑 电路图 (右部),6个8段共阳LED采用 动态显示:电阻用于 限流,三极管用于扩 展273的驱动能力。,电子钟逻辑 电路图 (右部),U4输出“字形码”。 U5输出“位选择码”,6个8段共阳

11、LED采用 动态显示:电阻用于 限流,三极管用于扩 展273的驱动能力。,系统设计(步骤): 1、技术指标(功能设计): 2、操作手册设计 3、硬件设计 4、软件设计 整体设计: 主程序监控三个键工况,依工况转入各键的功能程序,实现操作手册;T0中断服务程序实现实时时钟、作息时间报警;T1中断服务程序实现动态显示和“闪烁”;INT0中断服务程序判断是否临近正点,判断的依据是输入的5个脉冲的间隔严格固定;INT1中断服务程序实现正点校时。 数据关系图(数据流程图)设计 所有数据以BCD码的形式存在。 数据关系图以功能为核心绘出,数据关系图的集合即数据流程图。 比如K1键的功能程序数据关系图设计:

12、先弄清其“功能”,再弄清其数据关系,再绘制数据关系图。,系统设计(步骤): 1、技术指标(功能设计): 2、操作手册设计 3、硬件设计 4、软件设计 整体设计: 主程序监控三个键工况,依工况转入各键的功能程序,实现操作手册;T0中断服务程序实现实时时钟、作息时间报警;T1中断服务程序实现动态显示和“闪烁”;INT0中断服务程序判断是否临近正点,判断的依据是输入的5个脉冲的间隔严格固定;INT1中断服务程序实现正点校时。 数据关系图(数据流程图)设计 所有数据以BCD码的形式存在。 数据关系图以功能为核心绘出,数据关系图的集合即数据流程图。 比如K1键的功能程序数据关系图设计:先弄清其“功能”,

13、再弄清其数据关系,再绘制数据关系图。,系统设计(步骤): 1、技术指标(功能设计): 2、操作手册设计 3、硬件设计 4、软件设计 整体设计: 主程序监控三个键工况,依工况转入各键的功能程序,实现操作手册;T0中断服务程序实现实时时钟、作息时间报警;T1中断服务程序实现动态显示和“闪烁”;INT0中断服务程序判断是否临近正点,判断的依据是输入的5个脉冲的间隔严格固定;INT1中断服务程序实现正点校时。 数据关系图(数据流程图)设计 所有数据以BCD码的形式存在。 数据关系图以功能为核心绘出,数据关系图的集合即数据流程图。 比如K1键的功能程序数据关系图设计:先弄清其“功能”,再弄清其数据关系,

14、再绘制数据关系图。,功能键的功能程序数据关系图设计:先弄清其“功能”,再弄清其数据关系,再绘制数据关系图。 按k1切换电子钟工作状态:时钟状态、校时状态、设时状态依次循环。 时钟状态下显示即时时钟。 校时状态下显示即时时钟,但“时钟”闪烁。 设时状态下最高两位显示器显示作息时间序号i并且闪烁。其他四位显示器显示第i个作息时间的时和分,功能键的功能程序数据关系图设计:先弄清其“功能”,再弄清其数据关系,再绘制数据关系图。 按k1切换电子钟工作状态:时钟状态、校时状态、设时状态依次循环。 时钟状态下显示即时时钟。 校时状态下显示即时时钟,但“时钟”闪烁。 设时状态下最高两位显示器显示作息时间序号i

15、并且闪烁。其他四位显示器显示第i个作息时间的时和分 数据“库”设计: 用一个字节保存“工作状态”:0、1、2分别对应时钟、校时、设时三个状态。,功能键的功能程序数据关系图设计:先弄清其“功能”,再弄清其数据关系,再绘制数据关系图。 按k1切换电子钟工作状态:时钟状态、校时状态、设时状态依次循环。 时钟状态下显示即时时钟。 校时状态下显示即时时钟,但“时钟”闪烁。 设时状态下最高两位显示器显示作息时间序号i并且闪烁。其他四位显示器显示第i个作息时间的时和分。 T1中断服务程序的数据关系图,功能键的功能程序数据关系图设计:先弄清其“功能”,再弄清其数据关系,再绘制数据关系图。 按k1切换电子钟工作

16、状态:时钟状态、校时状态、设时状态依次循环。 时钟状态下显示即时时钟。 校时状态下显示即时时钟,但“时钟”闪烁。 设时状态下最高两位显示器显示作息时间序号i并且闪烁。其他四位显示器显示第i个作息时间的时和分。 T1中断服务程序的数据关系图,数据“库”设计: 用一个字节保存“闪烁信息”: 0、1、2分别对应时闪烁、分闪烁、秒闪烁(校时)。 0、1、2分别对应序号闪烁、时闪烁、分闪烁(设时)。 “序号i作息时间”用三个字节: 一个字节保存作息时间序号i,两个字节保存第i个作息时间的时和分。 用三个字节保存即时时钟:分别存放时、分、秒。,校时状态下对闪烁部分进行校准。 按K2切换校时对象:时钟、分钟

17、、秒钟依次循环选择,选定的校时对象闪烁。 按k3修改校时对象:按k3一次,校时对象增值1。 按k1切换出校时状态。,设时状态下对闪烁部分进行作息时间设定。 按K2切换“设时状态”下的操作对象:作息时间序号、作息时间的时、作息时间的分依次循环选择,选定的操作对象闪烁。 按k3修改“设时状态”下的操作对象:按k3一次,操作对象增值1。 按k1切换出设时状态。,“闪烁”信息,K3键的功能程序,K3键被击,作息时间表,序号i作息时间,两种状态下的K3键的数据关系图如上,合并后如下,“作息时间表”设计:,数据“库”设计: 用32个字节保存“作息时间表”,保存顺序: hour0,minute0,hour1

18、,minute1,hour15,minute15。,数据关系图(数据流程图)设计 T0中断服务程序数据关系图 先弄清其“功能”,再弄清其数据关系,再绘制数据关系图。 T0中断服务程序实现实时时钟、作息时间报警;,数据关系图(数据流程图)设计 T0中断服务程序数据关系图 先弄清其“功能”,再弄清其数据关系,再绘制数据关系图。 INT0中断服务程序判断是否临近正点,判断的依据是输入的5个脉冲的间隔严格固定;INT1中断服务程序实现正点校时。,数据关系图(数据流程图)设计 T0中断服务程序数据关系图 先弄清其“功能”,再弄清其数据关系,再绘制数据关系图。 INT0中断服务程序判断是否临近正点,判断的

19、依据是输入的5个脉冲的间隔严格固定;INT1中断服务程序实现正点校时。,数据“库”设计: “临近正点”用位变量表示:1表示临近正点,信息系统流程图(数据关系图的集合),系统设计(步骤): 1、技术指标(功能设计): 2、操作手册设计 3、硬件设计 4、软件设计 整体设计: 信息系统流程图设计 数据“库”设计,用一个字节保存工作状态:0、1、2分别对应时钟、校时、设时三个状态。 用一个字节保存闪烁信息: 0、1、2分别对应时闪烁、分闪烁、秒闪烁(校时)。 0、1、2分别对应序号闪烁、时闪烁、分闪烁(设时)。 用三个字节保存序号i作息时间 : 一个字节保存作息时间序号i,两个字节保存第i个作息时间

20、的时和分。 用三个字节保存即时时钟:分别存放时、分、秒。 用32个字节保存作息时间表,保存顺序: hour1,minute1,hour2,minute2,hour16,minute16 用位变量保存临近正点:1表示临近正点 依上列安排进行存储设计,; 程序清单(存储设计) ;用ZIWEI输出显示器位选择码 ZIWEI data 8000H ;用ZIXING输出显示器字形码 ZIXING data 4000H ,; 程序清单(存储设计) ;用STATE保存 “工作状态”:0、1、2分别对应时钟、校时、设时三个状态。 STATE equ 55H ;初始化为0 ;用SHSHUO保存“闪烁信息”:校时

21、状态:0、1、2分别对应时闪烁、分闪烁、秒闪烁;设时 ;状态:0、1、2分别对应序号i闪烁、时闪烁、分闪烁。 SHSHUO equ 56H;初始化为0 ;用MO保存模加计算的模 MO equ 57H ;用三个字节保存“序号i作息时间” : ;一个字节保存作息时间序号i,两个字节保存第i个作息时间的时和分。 XUHAO equ 5AH;保存i,仅当i大于15时初始化为0 HOURI equ 5BH ;初始化时赋予作息时间表中与i对应的时钟值 MINUTEI equ 5CH ;初始化时赋予作息时间表中与i对应的分钟值 ;用三个字节保存“即时时钟”:分别存放时、分、秒。 HOUR equ 5DH;初

22、始化时:hour23则hour0 MINUTE equ 5EH;初始化时:minute59则minute0 SECOND equ 5FH;初始化时:second59则second0 ;用32个字节保存“作息时间表”,60H作为第1字节地址。保存顺序: ; hour1,minute1,hour2,minute2,hour16,minute16。 BIAO equ 60H;初始化时,表中时大于23,或分大于59则赋予0 ,; 程序清单(存储设计) ;用位变量ZHDIAN保存“临近正点”信息:1表示临近正点。 ZHDIAN bit 00H ;初始化为0 ;用位变量ALARM输出报警信号,0有效。 A

23、LARM bit P1.4 ;初始化为1 ;用位变量XIMIE控制灯的闪烁,1对应半秒,0对应整秒,T0中断服务程序设置 XIMIE bit 01H;初始化为0。 ;用位变量BANZJ控制显示半字节部分:BANZJ=1显示数据高半字节;否则显示低半字节 BANZJ bit 02H;初始化为0 ;位变量ZHTBH为1表示STATE变化了一次:在K1分支置1,在T1中断服务程序中清0 ZHTBH bit 03H;初始化为0 ,系统设计(步骤): 1、技术指标(功能设计): 2、操作手册设计 3、硬件设计 4、软件设计 整体设计: 信息系统流程图设计 数据“库”设计 程序流程图设计(依数据关系图设计

24、之),主程序流程图,主程序流程图,START:. ST1:. ST2:. ST3: .,;功能:一字节BCD码加1计算(模加计算) ;入口参数:R0指向此字节,MO为模 ;出口参数:A中有计算结果,位Mbit=1表示本次计算和=模 MOJ1:MOV A,R0 ADD A,#1 DA A CJNE A,MO,MOJ12 ;计算结果与模比较 MOJ12: JC MOJ13 ;和小于模转,和即计算结果 CLR A;和等于模,计算结果为0 MOJ13:MOV R0,A ;保存计算结果 RET,; 程序清单(存储设计) . ;MO保存模加计算的模 MO EQU 57H ,;用位变量Mbit为模加运算进位

25、:1标识有进位,0标识无进位。 Mbit bit 02H,START: . ST1:MOV R0,#BIAO MOV R2,#16 ST11: MOV A,R0 CJNE A,#24H,ST12 ST12:JC ST13 CLR A ST13:MOV R0,A INC R0 INC R0 DJNZ R2,ST11 MOV R0,#BIAO+1 MOV R2,#16 ST14: MOV A,R0 CJNE A,#60H,ST15 ST15:JC ST16 CLR A ST16:MOV R0,A INC R0 INC R0 DJNZ R2,ST14 ST160: ,BIAO: 作息时间表初始化时,

26、表中时钟大于23则赋予0,表中分钟大于59则赋予0,START: ST1: ST160: MOV A,HOUR CJNE A,24H,ST161 ST161:JC ST162 MOV HOUR,#0 ST162:MOV A,MINUTE CJNE A,60H,ST163 ST163:JC ST164 MOV MINUTE,#0 ST164MOV A,SECOND CJNE A,#60H,ST17 ST17:JC ST18 MOV SECOND,#00H ST18:.,HOUR: 初始化时:hour23则hour0 MINUTE: 初始化时:minute59则minute0 SECOND: 初始

27、化时:second59则second0,存储设计 STATE:初始化为0 SHSHUO:初始化为0 XUHAO:装有i i仅当其大于15时初始化化为0 HOURI: 初始化时赋予与i对应的作息时间 MINUTEI: 初始化时赋予与i对应的作息时间,START:. ST1:. ST18:MOV STATE,#0 MOV SHSHUO,#0 MOV A,XUHAO CJNE A,#16,ST182 ST182:JC ST183 MOV XUHAO,#0 ST183:MOV A,#XUHAO RL A ;Ai*2 ADD A,#BIAO ;BIAO=60H MOV R1,A MOV A,R1 ;A(

28、60H+ i*2) MOV HOURI,A INC R1 MOV A,R1 MOV MINUTEI,A .,START:. ST1:. ST18:MOV STATE,#0 MOV SHSHUO,#0 MOV A,XUHAO CJNE A,#16,ST182 ST182:JC ST183 MOV XUHAO,#0 ST183:MOV A,#XUHAO RL A ;Ai*2 ADD A,#BIAO ;BIAO=60H MOV R1,A MOV A,R1 ;A(60H+ i*2) MOV HOURI,A INC R1 MOV A,R1 MOV MINUTEI,A CLR ZHDIAN CLR XIM

29、IE;显示不“闪烁” CLR BANZJ;显示数据的低半字节 CLR ZHTBH;状态无变化 ST2:. ST3:.,;用ZHDIAN保存“临近正点”信息:1表示临近正点。 ZHDIAN bit 00H ;初始化为0 ;用位变量XIMIE控制灯的闪烁 XIMIE bit 01H;初始化为0。 ;BANZJ=1显示数据高半字节;否则显示低半字节 BANZJ bit 03H;初始化为0 ;位变量ZHTBH为1表示STATE变化了一次:在K1分支置1,在T1中断服务程序中清0 ZHTBH bit 04H ;初始化为0,START:. ST1:. ST2:MOV A,P1 ANL A,#07H; 07

30、H=00000111B XOR A,#07H; A非0即“有键被击” JZ ST2 LCALL DELAY ;延时20ms MOV A,P1 ANL A,#07H XOR A,#07H JZ ST2 MOV R3,P1 ;保存“被击键”于R3 ST21:MOV A,P1 ANL A,#07H; 07H=00000111B XOR A,#07H; A非0即键未释放 JNZ ST21 LCALL DELAY ;延时20ms ST3:.,START:. ST1:. ST2:MOV A,P1 ANL A,#07H; 07H=00000111B XOR A,#07H; A非0即“有键被击” JZ ST2

31、 LCALL DELAY ;延时20ms MOV A,P1 ANL A,#07H XOR A,#07H JZ ST2 MOV R3,P1 ;保存“被击键”于R3 ST21:MOV A,P1 ANL A,#07H; 07H=00000111B XOR A,#07H; A非0即键未释放 JNZ ST21 LCALL DELAY ;延时20ms ST3:.,K3:. LJMP ST2 K1:. LJMP ST2 K2: . LJMP ST2,START:. ST1:. ST2:. MOV R3,P1 ;保存“被击键”于R3 . ST3:MOV A,R3 JNB ACC.2,K1 ;K1被击转K1分支

32、 JNB ACC.1,K2 ;K2被击转K2分支,;K1分支:始于标号K1,终于标号ST2 ;K2分支:始于标号K2,终于标号ST2 ;K3分支:始于标号K3,终于标号ST2,STATE:初始化为0 ; 0、1、2分别对应时钟、校时、设时三个状态。,操作手册 按k1切换电子钟工作状态:时钟状态、校时状态、设时状态依次循环。 ,;K1分支:始于标号K1,终于标号ST2,STATE:初始化为0 ; 0、1、2分别对应时钟、校时、设时三个状态。,K1:SETB ZHTBH ;标识STATE变化,在T1INT中清0 MOV A,STATE INC A CJNE A,#3,K11 MOV STATE,#

33、0 LJMP ST2 K11:MOV STATE,A LJMP ST2,操作手册 按k1切换电子钟工作状态:时钟状态、校时状态、设时状态依次循环。 设时状态下最高两位显示器显示作息时间序号i并且闪烁。其他四位显示器显示第i个作息时间的时和分。,;位变量ZHTBH为1表示STATE变化了一次:在K1分支置1,在T1中断服务程序中清0 ZHTBH bit 04H;初始化为0,操作手册 校时状态下对闪烁部分进行校准。 按K2切换校时对象:时钟、分钟、秒钟依次循环选择,选定的校时对象闪烁。 设时状态下对闪烁部分进行作息时间设定。 按K2切换“设时状态”下的操作对象:作息时间序号、作息时间的时、作息时间

34、的分依次循环选择,选定的操作对象闪烁。 .,;用SHSHUO保存“闪烁信息”。 ;校时状态:0、1、2分别对应时闪烁、分闪烁、秒闪烁 ;设时状态:0、1、2分别对应序号i闪烁,时闪烁,分闪烁 SHSHUO EQU 58H;初始化为0,操作手册 校时状态下对闪烁部分进行校准。 按K2切换校时对象:时钟、分钟、秒钟依次循环选择,选定的校时对象闪烁。 设时状态下对闪烁部分进行作息时间设定。 按K2切换“设时状态”下的操作对象:作息时间序号、作息时间的时、作息时间的分依次循环选择,选定的操作对象闪烁。 .,;用SHSHUO保存“闪烁信息”。 ;校时状态:0、1、2分别对应时闪烁、分闪烁、秒闪烁 ;设时

35、状态:0、1、2分别对应序号i闪烁,时闪烁,分闪烁 SHSHUO EQU 58H;初始化为0,K2:MOV A,STATE CJNE A,#0,K21 LJMP ST2 K21:MOV A,SHSHUO INC A CJNE A,#3,K22 MOV A,#0 K22:MOV SHSHUO,A LJMP ST2,K2分支始于标号K2,终于ST2,操作手册 校时状态下对闪烁部分进行校准。 按K2切换校时对象:时钟、分钟、秒钟依次循环选择,选定的校时对象闪烁。 按k3修改校时对象:按k3一次,校时对象增值1。 设时状态下对闪烁部分进行作息时间设定。 按K2切换“设时状态”下的操作对象:作息时间序号

36、、作息时间的时、作息时间的分依次循环选择,选定的操作对象闪烁。 按k3修改“设时状态”下的操作对象:按k3一次,操作对象增值1。,K3:MOV A,STATE JNZ K31 LJMP ST2 K31:JNB ACC.0,SSH XSH:MOV A,SHSHUO CJNE A,#1,K32 XSH1:MOV R0,#MINUTE MOV MO,#60H LCALL MOJ1 LJMP ST2,K32:JNC XSH2 XSH0:MOV R1,#HOUR MOV MO,#24H LCALL MOJ1 LJMP ST2 XSH2:MOV R1,#SECOND MOV MO,#60H LCALL M

37、OJ1 LJMP ST2,SSH: MOV A,SHSHUO ; CJNE A,#1,SSHF SSH1: MOV R0,#HOURI MOV MO,#24H LCALL MOJ1 SJMP CUNB SSHF:JC SSH0 SSH2:MOVR0,#MINUTEI MOV MO,#60H LCALL MOJ1 SJMP CUNB SSH0:MOV R0,#XUHAO,MOV MO,#16H LCALL MOJ1 RL A ;Ai*2 ADD A,#BIAO ;BIAO=60H MOV R1,A MOV A,R1 ;A(60H+ i*2) MOV HOURI,A INC R1 MOV A,R1

38、 MOV MINUTEI,A CUNB: ,CUNB:MOV A,XUHAO ;A=i RL A ;A=2*i ADD A,#BIAO MOV R0,A ;R0指向作息表第i项 MOV A,HOURI MOV R0,A ;作息时间i的时入表 INC R0 MOV A,MINUTEI MOV R0,A ;作息时间i分入表 LJMP ST2,BIAO EQU 60H ;32字节作息时间表首地址,系统软件体系结构,为避免寄存器冲突,必须分配工作寄存器区,系统软件体系结构,主程序监控三个键工况和光敏模块输入,依工况转入各键的功能程序,实现操作手册、依光敏模块输入控制显示与否; ; T0中断服务程序实现

39、实时时钟、作息时间报警 ; T1中断服务程序实现动态显示和“闪烁” ; INT0中断服务程序判断是否临近正点 。 INT1中断服务程序实现正点校时 。,RS1 RS0 主程序用0区寄存器: 0 0 T0程序用1区寄存器:0 1 T1程序用2区寄存器:1 0 外中断用3区寄存器: 1 1,为避免寄存器冲突,必须分配工作寄存器区,系统软件体系结构,主程序监控三个键工况和光敏模块输入,依工况转入各键的功能程序,实现操作手册、依光敏模块输入控制显示与否; ; T0中断服务程序实现实时时钟、作息时间报警 ; T1中断服务程序实现动态显示和“闪烁” ; INT0中断服务程序判断是否临近正点 。 INT1中

40、断服务程序实现正点校时 。,RS1 RS0 主程序用0区寄存器: 0 0 T0程序用1区寄存器:0 1 T1程序用2区寄存器:1 0 外中断用3区寄存器: 1 1,必须程序安排堆栈区: 估计堆栈区大小:程序几重嵌套?是否用了PUSH指令? 确定栈底:SP为多少?,为避免寄存器冲突,必须分配工作寄存器区,系统软件体系结构,主程序监控三个键工况和光敏模块输入,依工况转入各键的功能程序,实现操作手册、依光敏模块输入控制显示与否; ; T0中断服务程序实现实时时钟、作息时间报警 ; T1中断服务程序实现动态显示和“闪烁” ; INT0中断服务程序判断是否临近正点 。 INT1中断服务程序实现正点校时

41、。,外部中断触发方式采用边沿触发:TCON之IT1、IT0应置1,系统软件体系结构,主程序监控三个键工况和光敏模块输入,依工况转入各键的功能程序,实现操作手册、依光敏模块输入控制显示与否; ; T0中断服务程序实现实时时钟、作息时间报警 ; T1中断服务程序实现动态显示和“闪烁” ; INT0中断服务程序判断是否临近正点 。 INT1中断服务程序实现正点校时 。,外部中断触发方式采用边沿触发:TCON之IT1、IT0应置1,开中断:IE1xx01111b,系统软件体系结构,主程序监控三个键工况和光敏模块输入,依工况转入各键的功能程序,实现操作手册、依光敏模块输入控制显示与否; ; T0中断服务

42、程序实现实时时钟、作息时间报警 ; T1中断服务程序实现动态显示和“闪烁” ; INT0中断服务程序判断是否临近正点 。 INT1中断服务程序实现正点校时 。,外部中断触发方式采用边沿触发:TCON之IT1、IT0应置1,开中断:IE1xx01111b,中断优先级安排:,外部中断为高优先级,其他为低优先级:IPxxx00101b,T0中断服务程序实现实时时钟、作息时间报警 ; ;,设单片机晶振频率为12MHz 1)关于T0: 1s=50000us*20=T0定时*软件计数。 用T0以方式1定时50000us,用R7做软件计数器 ,初值为20。 TMOD= xxxx0001 计数初值X0 X0=

43、最大计数值-欲计的数=65536-50000us/1us =0000H-C350H=3CB0H TH03CH,TL00B0H R7初值=20,; T1中断服务程序实现动态显示和“闪烁” ;,2)关于T1 T1定时2ms*60.0125s(视物暂留时间) 用T1以方式1定时2ms TMOD=00010001 计数初值X1=65536-2000us/1us=0000H-07D0H=F830H TH10F8H,TL130H,RS1 RS0 主程序用0区寄存器: 0 0 T0程序用1区寄存器:0 1 T1程序用2区寄存器:1 0 外中断用3区寄存器: 1 1,必须程序安排堆栈区: 估计堆栈区大小:程序

44、几重嵌套?是否用了PUSH指令? 确定栈底:SP为多少?,外部中断触发方式采用边沿触发:TCON之IT1、IT0应置1,开中断:IE1xx01111b,外中断为高优先级,其他为低优先级:IPxxx00101b,TMOD00010001 TH0TL03CB0H 1区R720 2区R0,R3,R4初始化 TH1TL1F830H,START:CLR RS1 CLR RS0 MOV SP,#40H SETB IT1 SETB IT0 MOV IE,#8FH MOV IP,#05H MOV TMOD,#11H MOV TH0,#3CH MOV TL0,#0B0H MOV 0FH,#20 ;0FH即1区R

45、7 ;初始化为时钟态,以下信息准备显示即时时钟 MOV 13H,#01H;13H即2区R3 MOV 10H,#HOUR;10H即2区R0 MOV 14H,#HOUR;14H即2区R4 MOV TH1,#0F8H MOV TL1,#30H SETB TR0 SETB TR1 .,T0中断服务程序实现实时时钟、作息时间报警 ;,;用三个字节保存“即时时钟”:分别存放时、分、秒。 HOUR EQU 5EH;初始化时:hour23则hour0 MINUTE EQU 5FH;初始化时:minute59则minute0 SECOND EQU 5DH;初始化时:second59则second0 ;用32个字

46、节保存“作息时间表”,60H作为第1字节地址。保存顺序: ; hour1,minute1,hour2,minute2,hour16,minute16。 BIAO EQU 60H;初始化时,表中时大于23或分大于59则赋予0,;用位变量XIMIE控制灯的闪烁:1熄灭,0亮。1对应半秒,0对应整秒。在T0中断服务程序中设置。 XIMIE BIT 01H ;初始化为0。,T0INT:PUSH PSW PUSH MOV TH0,#3CH MOV TL0,#0B0H CLR RS1 SETB RS0 CJNE R7,#10,T01 SETB XIMIE ; 半秒标识置1 T01:DJNZ R7,T0E

47、MOV R7,#20 CLR XIMIE ;半秒标识清0 MOV R0,#SECOND MOV MO,#60H LCALL MOJ1 JC T0E ;和模转移 MOV R0,#MINUTE MOV MO,#60H LCALL MOJ1 JC BJ ;和模转移 MOV R0,#HOUR MOV MO,#24H LCALL MOJ1 BJ: .,BJ: MOV R2,#16 MOV R0,#BIAO DQ1:MOV A,R0 INC R0 CJNE A,HOUR,DQ11 MOV A,R0 CJNE A,MINUTE,DQ12 CLR ALARM ;相等则报警 NOP SETB ALARM SJM

48、P T0E,DQ11:JNC T0E ;“表中时即时时”转 INC R0 DJNZ R2,DQ1 T0E:POP POP PSW RETI,HOUR EQU 5EH;即时时钟之时 MINUTE EQU 5FH;即时时钟之分 SECOND EQU 5DH;即时时钟之秒 BIAO EQU 60H;32字节作息时间表首地址,;用位变量ALARM输出报警信号,0有效。 ALARM bit P1.4 ;初始化为1,位选择码 SHSHUO 00000001 0 00000010 0 00000100 1 00001000 1 00010000 2 00100000 2 R3,用位变量XIMIE控制灯的闪烁

49、:1熄灭,0亮。半秒取反XIMIE一次。在T0中断服务程序中设置。初始化为0.,位选择码 SHSHUO 00000001 0 00000010 0 00000100 1 00001000 1 00010000 2 00100000 2 R3,用位变量XIMIE控制灯的闪烁:1熄灭,0亮。半秒取反XIMIE一次。在T0中断服务程序中设置。初始化为0.,T1INT,STATE0?,N,第i位显示器显示,Y,XIMIE=1?,Y,N,N,Y,RETI,SHSHUO=?,0,CR3.0R3.1,CR3.2R3.3,CR3.4R3.5,1,2,C=1?,Y,N,XSHbit,工作状态变化了吗?,Y,“显

50、示”的初始化,N,始于标号:T1INT 终于标号:XSHbit,按k1切换电子钟工作状态:时钟状态、校时状态、设时状态依次循环。 时钟状态下显示即时时钟。 校时状态下显示即时时钟,但要闪烁 设时状态显示作息时间序号i,第i个作息时间的时和分。也要闪烁,工作状态的改变,显示内容可能变化, 显示有关的寄存器R0,R3,R4必须初始化,位变量ZHTBH为1表示工作状态变化了一次:在K1分支置1,在T1中断服务程序中清0 ZHTBH bit 04H ;初始化为0,;用三个字节保存及第i个作息时间:i,时,分。 XUHAO equ 5AH HOURI equ 5BH MINUTEI equ 5CH ;用

51、三个字节保存“即时时钟”:分别存放时、分、秒。 HOUR equ 5DH MINUTE equ 5EH SECOND equ 5FH,;程序功能:第i位显示器显示 ;入口参数:(R3)位选择码,初始化为01H;(R0)=(R4)=待显示数据的第一字节地址;BANZJ=1显示 ;数据高半字节,否则显示低半字节,初始化时已设置好为0。 ;出口参数:无 XSHb:MOV A,R3 MOV DPTR,#ZIWEI MOVX DPTR,A MOV A,R0 JNB BANZJ,XSH0 ;本次显示低半字节转XSH0 CLR BANZJ;下次显示低半字节 SWAP A;本次显示高半字节 SJMP XSH1

52、 XSH0:SETB BANZJ;下次显示高半字节 XSH1: ANL A,#0FH MOV DPTR,#DSEG MOVC A,A+DPTR MOV DPTR,#ZXING DIRI:MOVX DPTR,A ;改变i,为下一次显示作准备 DSEG: DB 0C0H,0F9H,0A4H,0B0H,99H DB 92H,82H,0F8H,80H,90H,位选择码 “待显示数” 00000001 第1字节L 00000010 第1字节H 00000100 第2字节L 00001000 第2字节H 00010000 第3字节L 00100000 第3字节H R3 R0,;程序功能:器第i位显示显示 ;入口参数:(R3)位选择码,初始化为01H;(R0)=(R4)=待显示数据的第一字节地址;BANZJ=1显示数据;高半字节,否则显

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论