ImageVerifierCode 换一换
格式:DOCX , 页数:30 ,大小:20.50KB ,
资源ID:3604615      下载积分:12 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3604615.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(电铃程序.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

电铃程序.docx

1、电铃程序;*教学打铃控制器程序*;CPU: AT89S52, Fosc=12MHz;+变量定义 + SET_TIME BIT P1.0 ;时间设定 SET_ALARM BIT P1.1 ;打铃设定 LEFT BIT P1.2 ;左移位 UP BIT P1.3 ;上翻/加1 DOWN BIT P1.4 ;下翻/减1 RIGHT BIT P1.5 ;右移位 ESC BIT P1.6 ;取消/退出 ENTER BIT P1.7 ;确认 KEY_BUF EQU 30H ;原按键状态 KEY_ST EQU 31H ;键闭合标志,ON:0FFH,OFF:00H SCL BIT P3.3 ;IIC时钟线 S

2、DA BIT P3.2 ;IIC数据线 FLASH_S BIT P3.1 ;秒闪 CONTREL BIT P3.4 ;控制;1=ON H_MEM EQU 10H ;时 M_MEM EQU 11H ;分 S_MEM EQU 12H ;秒 CT_50MS EQU 13H ;50mS计数器 NEW_TIME EQU 14H ;时间更新标志,0FFH更新 DIS_MEM1 EQU 15H ;显示数据存储器1 DIS_MEM2 EQU 16H ;显示数据存储器2 DIS_MEM3 EQU 17H ;显示数据存储器3 DIS_BUF1 EQU 20H ;显示缓冲器1(段码,左) DIS_BUF2 EQU

3、21H ;显示缓冲器2(段码) DIS_BUF3 EQU 22H ;显示缓冲器3(段码) DIS_BUF4 EQU 23H ;显示缓冲器4(段码) DIS_BUF5 EQU 24H ;显示缓冲器5(段码) DIS_BUF6 EQU 25H ;显示缓冲器6(段码,右) AL_NUMBER EQU 26H ;打铃序号 AL_TOTA EQU 27H ;打铃点总数 ALARM_ST EQU 28H ;打铃状态,0FFH正在打铃 TIME_OVER EQU 29H ;按键返回时间计数器 TOTA_ADDR EQU 60H ;打铃点总数在24C02中的存储地址 ORG 0000H AJMP START

4、ORG 0002BH AJMP INT_T0 ;T2中断向量 ORG 0030HSTART: MOV SP,#60H CLR CONTREL CLR FLASH_S MOV H_MEM,#12 MOV M_MEM,#0 MOV S_MEM,#0 MOV CT_50MS,#20 MOV NEW_TIME,#0 MOV KEY_ST,#0 MOV R4,#TOTA_ADDR ;从24C02读打铃时间点总数 MOV R0,#AL_TOTA MOV R3,#1 ACALL RD_EEROM MOV A,AL_TOTA ;总数大于0,小于、等于40判断 JZ JMP_RD CLR C SUBB A,#4

5、0 JC RD_AL_LIST MOV AL_TOTA,#0 MOV R4,#TOTA_ADDR MOV R3,#1 MOV R0,#AL_TOTA ACALL WR_EEROM SJMP JMP_RDRD_AL_LIST: MOV A,AL_TOTA ;从24C02读打铃时间表 RL A MOV R3,A ;R0:RAM地址指针,R2:8位移位计数器 ;R3:数据字节计数器 ;R4:24C02 存储地址 MOV R0,#80H MOV R4,#00H ACALL RD_EEROMJMP_RD: MOV TH2,#3CH ;T2工作方式、时间常数 MOV TL2 , #0ABH MOV RCA

6、P2H, #3CH MOV RCAP2L, #0ABH MOV T2CON , #04H SETB ET2 ;开中断 SETB EAWAITE: ACALL DISPLAY ACALL KEY_CHECK MOV A,KEY_ST CJNE A,#00H,KEY_MAIN MOV A,NEW_TIME CJNE A,#0FFH,WAITE MOV NEW_TIME,#0NEW_DIS: MOV A,H_MEM ACALL HBCD MOV DIS_MEM1,A MOV A,M_MEM ACALL HBCD MOV DIS_MEM2,A MOV A,S_MEM ACALL HBCD MOV DI

7、S_MEM3,A ACALL DIS_TIME MOV A,ALARM_ST JNZ CHEK_OFF MOV A,S_MEM JNZ WAITE ACALL CHEK_AL ;打铃检测CHEK_OFF: MOV A,S_MEM CLR C SUBB A,#20 JC WAITE CLR CONTREL MOV ALARM_ST,#0 SJMP WAITE ;SJMP $;*打铃控制子程序*CHEK_AL:MOV A,AL_TOTA JZ CHEK_END MOV R0,#80H MOV R6,AL_TOTACHK_LOOP: MOV A,R0 CJNE A,H_MEM,NEXT_AL_1 I

8、NC R0 MOV A,R0 CJNE A,M_MEM,NEXT_AL_2 SETB CONTREL MOV ALARM_ST,#0FFH SJMP CHEK_ENDNEXT_AL_1:INC R0NEXT_AL_2:INC R0 DJNZ R6,CHK_LOOP CLR CONTREL MOV ALARM_ST,#0CHEK_END:RET;*键盘处理程序段*KEY_MAIN: MOV KEY_ST,#0 JNB SET_TIME,TIME_SET JNB SET_ALARM,JMP_SET_A SJMP NEW_DISJMP_SET_A:AJMP ALARM_SET;=时间设置=TIME_

9、SET: MOV TIME_OVER,#30 MOV R5,H_MEM MOV R6,M_MEM MOV R7,S_MEMSET_H: JNB FLASH_S,GATE_H MOV DIS_MEM1,#0AAH SJMP CLS_HGATE_H: MOV A,R5 ACALL HBCD MOV DIS_MEM1,A MOV A,R6 ACALL HBCD MOV DIS_MEM2,A MOV A,R7 ACALL HBCD MOV DIS_MEM3,ACLS_H: ACALL DIS_TIME ACALL DISPLAY MOV A,NEW_TIME CJNE A,#0FFH,JMP_1 MO

10、V NEW_TIME,#0 DJNZ TIME_OVER,JMP_1 AJMP WAITEJMP_1: ACALL KEY_CHECK MOV A,KEY_ST CJNE A,#0FFH,SET_H MOV KEY_ST,#0 MOV TIME_OVER,#30 JNB UP,H_UP JNB DOWN,H_DOWN JNB LEFT,JMP_SET_S JNB RIGHT,SET_M JNB ESC,JMP_ESC JNB ENTER,JMP_OK SJMP SET_HJMP_ESC:AJMP TIME_SET_ESCJMP_OK: AJMP TIME_SET_OKJMP_SET_S: AJ

11、MP SET_SH_UP: CJNE R5,#23,INC_H MOV R5,#0FFHINC_H: INC R5 AJMP GATE_HH_DOWN: CJNE R5,#0,DEC_H MOV R5,#24DEC_H: DEC R5 AJMP GATE_H;=分钟设置=SET_M: JNB FLASH_S,GATE_M MOV DIS_MEM2,#0AAH SJMP CLS_MGATE_M: MOV A,R6 ACALL HBCD MOV DIS_MEM2,A MOV A,R5 ACALL HBCD MOV DIS_MEM1,A MOV A,R7 ACALL HBCD MOV DIS_MEM

12、3,ACLS_M: ACALL DIS_TIME ACALL DISPLAY MOV A,NEW_TIME CJNE A,#0FFH,JMP_2 MOV NEW_TIME,#0 DJNZ TIME_OVER,JMP_2 AJMP WAITEJMP_2: ACALL KEY_CHECK MOV A,KEY_ST CJNE A,#0FFH,SET_M MOV KEY_ST,#0 MOV TIME_OVER,#30 JNB UP,M_UP JNB DOWN,M_DOWN JNB LEFT,JMP_SET_H JNB RIGHT,SET_S JNB ESC,TIME_SET_ESC JNB ENTER

13、,TIME_SET_OK SJMP SET_MM_UP: CJNE R6,#59,INC_M MOV R6,#0FFHINC_M: INC R6 AJMP GATE_MM_DOWN: CJNE R6,#0,DEC_M MOV R6,#60DEC_M: DEC R6 AJMP GATE_MJMP_SET_H: AJMP SET_H;=秒设置=SET_S: JNB FLASH_S,GATE_S MOV DIS_MEM3,#0AAH SJMP CLS_SGATE_S: MOV A,R7 ACALL HBCD MOV DIS_MEM3,A MOV A,R5 ACALL HBCD MOV DIS_MEM

14、1,A MOV A,R6 ACALL HBCD MOV DIS_MEM2,ACLS_S: ACALL DIS_TIME ACALL DISPLAY MOV A,NEW_TIME CJNE A,#0FFH,JMP_3 MOV NEW_TIME,#0 DJNZ TIME_OVER,JMP_3 AJMP WAITEJMP_3: ACALL KEY_CHECK MOV A,KEY_ST CJNE A,#0FFH,SET_S MOV KEY_ST,#0 MOV TIME_OVER,#30 JNB UP,S_UP JNB DOWN,S_DOWN JNB LEFT,JMP_SET_S_M JNB RIGHT

15、,JMP_S_H JNB ESC,TIME_SET_ESC JNB ENTER,TIME_SET_OK SJMP SET_SJMP_S_H:AJMP SET_HS_UP: CJNE R7,#59,INC_S MOV R7,#0FFHINC_S: INC R7 AJMP GATE_SS_DOWN: CJNE R7,#0,DEC_S MOV R7,#60DEC_S: DEC R7 AJMP GATE_SJMP_SET_S_M: AJMP SET_M;=TIME_SET_ESC: AJMP NEW_DIS ;时间设置取消/返回TIME_SET_OK: MOV S_MEM,R7 ;时间设置确认/返回

16、MOV M_MEM,R6 MOV H_MEM,R5 AJMP NEW_DIS;=打铃设置程序段=ALARM_SET: MOV TIME_OVER,#20 MOV AL_NUMBER,AL_TOTAAL_LIST:MOV A,AL_NUMBER JNZ NUMBER_N MOV DIS_MEM1,#0 MOV DIS_MEM2,#0AAH MOV DIS_MEM3,#0AAH ACALL DIS_TIME AJMP WAITE_ANUMBER_N: DEC A RL A ADD A,#80H MOV R0,A MOV A,AL_NUMBER ACALL HBCD MOV DIS_MEM1,A M

17、OV A,R0 ACALL HBCD MOV DIS_MEM2,A INC R0 MOV A,R0 ACALL HBCD MOV DIS_MEM3,A ACALL DIS_TIMEWAITE_A:ACALL DISPLAY MOV A,NEW_TIME CJNE A,#0FFH,JMP_4 MOV NEW_TIME,#0 DJNZ TIME_OVER,JMP_4 AJMP WAITEJMP_4: ACALL KEY_CHECK MOV A,KEY_ST CJNE A,#0FFH,WAITE_A MOV KEY_ST,#0 MOV TIME_OVER,#20 JNB UP,NUM_UP JNB

18、DOWN,NUM_DOWN JNB ESC,JMP_ESC_AL JNB ENTER,JMP_OK_AL JNB SET_ALARM,JMP_DEL_AL JNB SET_TIME,CHANGE_AL SJMP WAITE_AJMP_DEL_AL: AJMP DEL_AL;-NUM_UP: MOV A,AL_NUMBER CJNE A,AL_TOTA,INC_NUM MOV AL_NUMBER,#0FFHINC_NUM:INC AL_NUMBER AJMP AL_LIST;-NUM_DOWN:MOV A,AL_NUMBER CJNE A,#0,DEC_NUM MOV AL_NUMBER,AL_

19、TOTA SJMP J_DECNUMDEC_NUM:DEC AL_NUMBERJ_DECNUM:AJMP AL_LIST;=修改打铃时间点=CHANGE_AL: MOV A,AL_NUMBER JZ JMP_ADD_AL DEC A RL A ADD A,#80H MOV R0,A MOV A,R0 MOV R6,A INC R0 MOV A,R0 MOV R7,A;-时修改-SET_AL_H: JNB FLASH_S,GATE_AL_H MOV DIS_MEM2,#0AAH SJMP CLS_AL_HGATE_AL_H: MOV A,AL_NUMBER ACALL HBCD MOV DIS_

20、MEM1,A MOV A,R6 ACALL HBCD MOV DIS_MEM2,ACLS_AL_H: MOV A,R7 ACALL HBCD MOV DIS_MEM3,A ACALL DIS_TIME ACALL DISPLAY MOV A,NEW_TIME CJNE A,#0FFH,JMP_5 MOV NEW_TIME,#0 DJNZ TIME_OVER,JMP_5 AJMP WAITEJMP_5: ACALL KEY_CHECK MOV A,KEY_ST CJNE A,#0FFH,SET_AL_H MOV KEY_ST,#0 MOV TIME_OVER,#20 JNB UP,AL_H_UP

21、 JNB DOWN,AL_H_DOWN JNB LEFT,SET_AL_M JNB RIGHT,SET_AL_M JNB ESC,JMP_AL_LIST JNB ENTER,JMP_SET_AL_OK SJMP SET_AL_HJMP_ESC_AL: AJMP ESC_ALJMP_OK_AL: AJMP OK_ALJMP_ADD_AL: AJMP ADD_ALJMP_SET_AL_OK: AJMP SET_AL_OKJMP_AL_LIST: AJMP AL_LISTAL_H_UP:CJNE R6,#23,INC_H_AL MOV R6,#0FFHINC_H_AL:INC R6 AJMP GAT

22、E_AL_HAL_H_DOWN: CJNE R6,#0,DEC_H_AL MOV R6,#24DEC_H_AL:DEC R6 AJMP GATE_AL_H;-分修改-SET_AL_M: JNB FLASH_S,GATE_AL_M MOV DIS_MEM3,#0AAH SJMP CLS_AL_MGATE_AL_M: MOV A,AL_NUMBER ACALL HBCD MOV DIS_MEM1,A MOV A,R7 ACALL HBCD MOV DIS_MEM3,ACLS_AL_M: MOV A,R6 ACALL HBCD MOV DIS_MEM2,A ACALL DIS_TIME ACALL

23、DISPLAY MOV A,NEW_TIME CJNE A,#0FFH,JMP_6 MOV NEW_TIME,#0 DJNZ TIME_OVER,JMP_6 AJMP WAITEJMP_6: ACALL KEY_CHECK MOV A,KEY_ST CJNE A,#0FFH,SET_AL_M MOV KEY_ST,#0 MOV TIME_OVER,#20 JNB UP,AL_M_UP JNB DOWN,AL_M_DOWN JNB LEFT,JMP_SET_AL_H JNB RIGHT,JMP_SET_AL_H JNB ESC,JMP_AL_LIST JNB ENTER,SET_AL_OK SJ

24、MP SET_AL_MJMP_SET_AL_H: AJMP SET_AL_HAL_M_UP:CJNE R7,#59,INC_M_AL MOV R7,#0FFHINC_M_AL:INC R7 AJMP GATE_AL_MAL_M_DOWN: CJNE R7,#0,DEC_M_AL MOV R7,#60DEC_M_AL:DEC R7 AJMP GATE_AL_M;=打铃点设置确认/返回到列表状态=SET_AL_OK:NOP MOV A,AL_NUMBER DEC A RL A ADD A,#80H MOV R0,A MOV A,R6 MOV R0,A INC R0 MOV A,R7 MOV R0,

25、A MOV R0,#80H MOV R2,AL_TOTA ACALL UP_LIST ;调升序排序程序 AJMP ALARM_SET;=增加打铃时间点=ADD_AL: INC AL_TOTA MOV AL_NUMBER,AL_TOTA MOV R6,#08 MOV R7,#0 MOV A,AL_NUMBER DEC A RL A ADD A,#80H MOV R0,A MOV A,R6 MOV R0,A INC R0 MOV A,R7 MOV R0,A AJMP SET_AL_H;=打铃设置取消/返回=ESC_AL: MOV R4,#TOTA_ADDR MOV R0,#AL_TOTA MOV

26、R3,#1 ACALL RD_EEROM MOV A,AL_TOTA JZ EXIT_SET_AL RL A MOV R3,A MOV R0,#80H MOV R4,#00H ACALL RD_EEROMEXIT_SET_AL: AJMP NEW_DIS;=打铃设置确认/返回=OK_AL: MOV R0,#AL_TOTA MOV R3,#1 MOV R4,#TOTA_ADDR ACALL WR_EEROM MOV A,AL_TOTA JZ JMP_NEW_DIS MOV A,AL_TOTA RL A MOV R0,#80H MOV R3,A MOV R4,#0 ACALL WR_EEROMJM

27、P_NEW_DIS: AJMP NEW_DISJMP_AL_SET: AJMP ALARM_SET;=删除打铃时间点=DEL_AL: MOV A,AL_TOTA JZ JMP_AL_SET JNB FLASH_S,GATE_DIS MOV DIS_MEM1,#0AAH MOV DIS_MEM2,#0AAH MOV DIS_MEM3,#0AAH SJMP CLS_DISGATE_DIS: MOV A,AL_NUMBER ACALL HBCD MOV DIS_MEM1,A MOV A,AL_NUMBER DEC A RL A ADD A,#80H MOV R0,A MOV A,R0 ACALL H

28、BCD MOV DIS_MEM2,A INC R0 MOV A,R0 ACALL HBCD MOV DIS_MEM3,ACLS_DIS:ACALL DIS_TIME ACALL DISPLAY MOV A,NEW_TIME CJNE A,#0FFH,JMP_7 MOV NEW_TIME,#0 DJNZ TIME_OVER,JMP_7 AJMP WAITEJMP_7: ACALL KEY_CHECK MOV A,KEY_ST CJNE A,#0FFH,DEL_AL MOV KEY_ST,#0 MOV TIME_OVER,#20 JNB ENTER,DEL_LIST JNB ESC,JMP_AL_SET_D AJMP

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1