![]() |
中国面包师贴吧-楼主(阅:286/回:0)按键计数器按键计数器 下面介绍一种通过MSP430F149单片机使用IARMSP430软件编程,使用汇编语言编程,记录K1,K2,K3按键点击次数,并通过LCD1602液晶屏显示出来的程序。开始点击K1键10次,直到LCD显示AD COUNT:0,计数器开始记录K1键按下去的次数,K1接在P1.0 K2接在P1.1, K3接在P1.2 , K4接在P1.3,K5接在P1.4 ,K6接在P1.5 , K7接在P1.6, K8接在P1.7. 点击K1键,多少次,点击K5键LCD就会显示K1键按下去的次数,和最后一次按键的时间 开始点击K2键10次,直到LCD显示AD COUNT:0,计数器开始记录K1键按下去的次数, 点击K2键,多少次,点击K6键LCD就会显示K1键按下去的次数,和最后一次按键的时间 开始点击K3键10次,直到LCD显示AD COUNT:0,计数器开始记录K1键按下去的次数, 点击K3键,多少次,点击K7键LCD就会显示K1键按下去的次数,和最后一次按键的时间 点击K8键LCD显示当前时间 点击 K4键计数器复位 程序如下 ; K1=P1.4 K2=P1.5 K3=P1.6 K4=P1.7 ;* 1602LCD显示秒表 * ;* K3 --- 控制按键 * ;* 第一次按下时,开始计时,第二次按下时,暂停计时。 * ;* 第三次按下时,累计计时,第四次按下时,暂停计时。 * ;* K4 --- 清零按键: * ;* 在任何状态下,按一下K4,均可清零。 * ;* * // 开始点击K1键10次,直到LCD显示AD COUNT:0,计数器开始记录K1键按下去的次数, //点击K1键,多少次,点击K5键LCD就会显示K1键按下去的次数,和最后一次按键的时间 // 开始点击K2键10次,直到LCD显示AD COUNT:0,计数器开始记录K1键按下去的次数, //点击K2键,多少次,点击K6键LCD就会显示K1键按下去的次数,和最后一次按键的时间 // 开始点击K3键10次,直到LCD显示AD COUNT:0,计数器开始记录K1键按下去的次数, //点击K3键,多少次,点击K7键LCD就会显示K1键按下去的次数,和最后一次按键的时间 //点击K8键LCD显示当前时间 //点击 K4键计数器复位 ;--------------------------------------- ;晶振 11.0592M ;定时器0,方式1 ;计时中断程序每隔10ms中断一次 ;--------------------------------------- // $INCLUDE(anjian.ASM) // EXTRN CODE (ANJIAN) //PUBLIC ANJIAN TLOW EQU 0CH ;定时器初值 THIGH EQU 0DCH // TLOW EQU 02H ;定时器初值 //THIGH EQU 009H NIAN1 EQU 26H NIAN EQU 27H YUE EQU 28H RI1 EQU 29H HOUR EQU 30H MIN EQU 31H SEC EQU 32H SEC0 EQU 33H ;10ms计数值 KEY_S EQU 34H ;为键当前的端口状况 KEY_V EQU 35H ;为键上次的端口状况 X EQU 36H ;LCD 地址变量 KEY_C EQU 37H ;键计数单元 KEY_SA EQU 38H ;为键当前的端口状况 KEY_VA EQU 39H ;为键上次的端口状况 KEY_CA EQU 40H ;键计数单元 KEY_SB EQU 41H ;为键当前的端口状况 KEY_VB EQU 42H ;为键上次的端口状况 KEY_CB EQU 43H ;键计数单元 KEY_SC EQU 44H ;为键当前的端口状况 KEY_VC EQU 45H ;为键上次的端口状况 KEY_CC EQU 46H ;键计数单元 KEY_SD EQU 47H ;为键当前的端口状况 KEY_VD EQU 48H ;为键上次的端口状况 KEY_CD EQU 49H ;键计数单元 KEY_SE EQU 50H ;为键当前的端口状况 KEY_VE EQU 51H ;为键上次的端口状况 KEY_CE EQU 52H ;键计数单元 KEY_SF EQU 53H ;为键当前的端口状况 KEY_VF EQU 54H ;为键上次的端口状况 KEY_CF EQU 55H ;键计数单元 DATA1 EQU 56H ;为键当前的端口状况 DATA2 EQU 57H ;为键上次的端口状况 DATA3 EQU 58H ; ;键计数单元 DATA4 EQU 59H ;为键当前的端口状况 K1 EQU P3.0 K2 EQU P3.1 K3 EQU P3.2 K4 EQU P3.3 K5 EQU P3.4 K6 EQU P3.5 K7 EQU P3.6 K8 EQU P3.7 // BEEP EQU P3.7 // RS EQU P2.0 ;LCD控制端口定义 // RW EQU P2.1 // EN EQU P2.2 BEEP EQU P2.3 RS EQU P1.0 ;LCD控制端口定义 RW EQU P1.1 EN EQU P2.5 ;---------------------------------------------------- ORG 0000H JMP START ORG 0BH JMP T0_INT ;---------------------------------------------------- START: MOV SP,#60H CLR EN CALL SET_LCD CALL INIT ;初始化变量 // MOV KEY_V,#01H MOV KEY_V,#07H MOV KEY_VA,#08H MOV KEY_VB,#09H // MOV KEY_VC,#02H CALL INIT_TIMER ;初始化定时器 SETB TR0 ;启动中断 // CALL MENU MAIN: //MOV SP,#60H // CLR EN CALL SET_LCD // CALL INIT ;初始化变量 // MOV KEY_V,#01H // MOV KEY_VC,#02H // CALL INIT_TIMER ;初始化定时器 //SETB TR0 ;启动中断 LOOP: // CALL CONV ;时间计数处理 CALL LOOP1 CALL LOOP2 CALL LOOP3 CALL LOOP4 CALL LOOP5 // CALL LOOP40 CALL SKEY ;判是否有键按下 JZ LOOPA ;无键按下转LOOP // CALL CONV CALL SKEY JZ LOOP MOV KEY_V,KEY_S ;交换数据 CALL P_KEY JMP LOOP LOOPA: //CALL CONV ;时间计数处理 CALL LOOP1 //CALL SKEY ;判是否有键按下 CALL SKEY1 ;判是否有键按下 // CALL SKEY2 ;判是否有键按下 JZ LOOPB ;无键按下转LOOP // CALL CONV //CALL SKEY CALL SKEY1 // CALL SKEY2 JZ LOOPA MOV KEY_VA,KEY_SA ;交换数据 CALL P_KEYA JMP LOOPA LOOPB: // CALL CONV ;时间计数处理 CALL LOOP1 //CALL SKEY ;判是否有键按下 //CALL SKEY1 ;判是否有键按下 CALL SKEY2 ;判是否有键按下 JZ LOOP ;无键按下转LOOP // CALL CONV //CALL SKEY //CALL SKEY1 CALL SKEY2 JZ LOOPB MOV KEY_VB,KEY_SB ;交换数据 CALL P_KEYB JMP LOOPB ;----------------------------------------------------- LOOP1: JB K4,LOOP6 ;判清零键是否按下 // CALL BZ //JMP START JMP MAIN // CALL SET_LCD LOOP2: JB K5,LOOP6 ;判清零键是否按下 // MOV A,KEY_VC // JB ACC.0,P_KEY3 // INC KEY_CC // CJNE A,#01H,P_KEY // MOV DPTR,#MADJ ;显示执行信息 //CALL P_KEY MOV A,KEY_C ;K3键是否第一次按下? CALL P_KEY // CJNE A,#01H,P_KEY1 //CJNE A,#01H,P_KEY1 CJNE A,#05H,KEY_C MOV DPTR,#MADJ5 ;显示执行信息 //CALL CONV // CALL DE // DELAY: MOV A,#1 ; CALL LCD_PRINT // JMP START LOOP3: JB K6,LOOP6 ;判清零键是否按下 // MOV A,KEY_VC // JB ACC.0,P_KEY3 // INC KEY_CC // CJNE A,#01H,P_KEY // MOV DPTR,#MADJ ;显示执行信息 //CALL P_KEY //IF (DATA1 =1) MOV A,KEY_CA ;K3键是否第一次按下? CALL P_KEYA // CALL DELAY1 // CJNE A,#01H,P_KEY1 // CJNE A,#01H,P_KEYA1 //CJNE A,#01H,KEY_C //CJNE A,#01H, KEY_C // CJNE A,#01H,KEY_VA // CJNE A,#01H,KEY_SA CJNE A,#05H,KEY_CA MOV DPTR,#MADJA5 ;显示执行信息 // CALL DE // DELAY: MOV A,#1 ; CALL LCD_PRINT // ENDIF // RET // JMP START LOOP4: JB K7,LOOP6 ;判清零键是否按下 // MOV A,KEY_VC // JB ACC.0,P_KEY3 // INC KEY_CC // CJNE A,#01H,P_KEY // MOV DPTR,#MADJ ;显示执行信息 //CALL P_KEY //IF (DATA2 =1) MOV A,KEY_CB ;K3键是否第一次按下? CALL P_KEYB // CJNE A,#01H,P_KEYB // MOV DATA1,KEY_CB //CJNE A,#01H, DATA1 // CJNE A,#01H,KEY_VB // CJNE A,#01H,KEY_SB CJNE A,#05H,KEY_CB //CALL DELAY1 MOV DPTR,#MADJB5 ;显示执行信息 //CJNE A,#01H,KEY_V // CJNE A,#02H, DATA1 //CJNE A,#01H,KEY_C // MOV DPTR,#MADJB ;显示执行信息 // CALL DE // DELAY: MOV A,#1 ; CALL LCD_PRINT // ENDIF // RET // JMP START // LOOP40: // JB K7,LOOP5 ;判清零键是否按下 // MOV A,KEY_VC // JB ACC.0,P_KEY3 // INC KEY_CC // CJNE A,#01H,P_KEY // MOV DPTR,#MADJ ;显示执行信息 //CALL P_KEY // MOV A,KEY_CB ;K3键是否第一次按下? // CALL P_KEYB // CJNE A,#01H,P_KEYB // MOV DATA1,KEY_CB //CJNE A,#01H, DATA1 // CJNE A,#02H,KEY_C // CJNE A,#02H, DATA1 //CJNE A,#01H,KEY_C // MOV DPTR,#MADJB1 ;显示执行信息 // CALL DE // DELAY: // MOV A,#1 ; // CALL LCD_PRINT // JMP START LOOP5: JB K8,LOOP6 ;判清零键是否按下 CALL CONV LOOP6: RET ;----------------------------------------------------- P_KEY: ; MOV A,KEY_V JB ACC.0,P_KEY3 INC KEY_C MOV A,KEY_C ;K3键是否第一次按下? CJNE A,#0001H,P_KEY1 MOV DPTR,#MADJ0 ;显示执行信息 MOV A,#1 ; CALL LCD_PRINT CALL CONV //SETB TR0 ;启动中断 RET P_KEY1: ;K3键是否第二次按下? MOV A,KEY_C CJNE A,#0002H,P_KEY2 MOV DPTR,#MADJ0 ;显示执行信息 MOV A,#1 CALL LCD_PRINT CALL CONV //CLR TR0 ;停止中断 RET P_KEY2: ;K3键是否第三次按下? MOV A,KEY_C CJNE A,#0003H,P_KEY3 MOV DPTR,#MADJ0 ;显示执行信息 MOV A,#1 CALL LCD_PRINT CALL CONV //SETB TR0 ;启动中断 RET P_KEY3: ;K3键是否第四次按下? MOV A,KEY_C CJNE A,#0004H,P_KEY4 MOV DPTR,#MADJ0 ;显示执行信息 MOV A,#1 CALL LCD_PRINT CALL CONV // CLR TR0 ;启动中断 P_KEY4: ;K3键是否第二次按下? MOV A,KEY_C CJNE A,#0005H,P_KEY5 MOV DPTR,#MADJ0 ;显示执行信息 MOV A,#1 CALL LCD_PRINT CALL CONV //CLR TR0 ;停止中断 RET P_KEY5: ;K3键是否第三次按下? MOV A,KEY_C CJNE A,#0006H,P_KEY6 MOV DPTR,#MADJ0 ;显示执行信息 MOV A,#1 CALL LCD_PRINT CALL CONV //SETB TR0 ;启动中断 RET P_KEY6: ;K3键是否第四次按下? MOV A,KEY_C CJNE A,#0007H,P_KEY7 MOV DPTR,#MADJ ;显示执行信息 MOV A,#1 CALL LCD_PRINT CALL CONV // CLR TR0 ;启动中断 P_KEY7: ;K3键是否第二次按下? MOV A,KEY_C CJNE A,#0008H,P_KEY8 MOV DPTR,#MADJ0 ;显示执行信息 MOV A,#1 CALL LCD_PRINT CALL CONV //CLR TR0 ;停止中断 RET P_KEY8: ;K3键是否第三次按下? MOV A,KEY_C CJNE A,#0009H,P_KEY9 MOV DPTR,#MADJ1 ;显示执行信息 MOV A,#1 CALL LCD_PRINT CALL CONV //SETB TR0 ;启动中断 RET P_KEY9: ;K3键是否第四次按下? MOV A,KEY_C CJNE A,#000AH,P_KEY10 MOV DPTR,#MADJ2 ;显示执行信息 MOV A,#1 CALL LCD_PRINT CALL CONV // CLR TR0 ;启动中断 P_KEY10: ;K3键是否第二次按下? MOV A,KEY_C CJNE A,#0BH,P_KEY11 MOV DPTR,#MADJ3 ;显示执行信息 MOV A,#1 CALL LCD_PRINT CALL CONV //CLR TR0 ;停止中断 RET P_KEY11: ;K3键是否第三次按下? MOV A,KEY_C CJNE A,#000CH,P_KEY12 MOV DPTR,#MADJ4 ;显示执行信息 MOV A,#1 CALL LCD_PRINT CALL CONV //SETB TR0 ;启动中断 RET P_KEY12: ;K3键是否第四次按下? MOV A,KEY_C CJNE A,#000DH,P_KEY13 MOV DPTR,#MADJ5 ;显示执行信息 MOV A,#1 CALL LCD_PRINT CALL CONV // CLR TR0 ;启动中断 P_KEY13: ;K3键是否第二次按下? MOV A,KEY_C CJNE A,#000EH,P_KEY14 MOV DPTR,#MADJ6 ;显示执行信息 MOV A,#1 CALL LCD_PRINT CALL CONV //CLR TR0 ;停止中断 RET P_KEY14: ;K3键是否第三次按下? MOV A,KEY_C CJNE A,#000FH,P_KEY15 MOV DPTR,#MADJ7 ;显示执行信息 MOV A,#1 CALL LCD_PRINT CALL CONV //SETB TR0 ;启动中断 RET P_KEY15: ;K3键是否第四次按下? MOV A,KEY_C CJNE A,#0010H,P_KEY16 MOV DPTR,#MADJ8 ;显示执行信息 MOV A,#1 CALL LCD_PRINT CALL CONV // CLR TR0 ;启动中断 P_KEY16: ;K3键是否第二次按下? MOV A,KEY_C CJNE A,#0011H,P_KEY17 MOV DPTR,#MADJ9 ;显示执行信息 MOV A,#1 CALL LCD_PRINT CALL CONV //CLR TR0 ;停止中断 RET P_KEY17: ;K3键是否第三次按下? MOV A,KEY_C CJNE A,#0012H,P_KEY18 MOV DPTR,#MADJ10 ;显示执行信息 MOV A,#1 CALL LCD_PRINT CALL CONV //SETB TR0 ;启动中断 RET P_KEY18: ;K3键是否第四次按下? MOV A,KEY_C CJNE A,#0013H,P_KEY19 MOV DPTR,#MADJ11 ;显示执行信息 MOV A,#1 CALL LCD_PRINT CALL CONV // CLR TR0 ;启动中断 P_KEY19: ;K3键是否第二次按下? MOV A,KEY_C CJNE A,#0014H,P_KEY20 MOV DPTR,#MADJ12 ;显示执行信息 MOV A,#1 CALL LCD_PRINT CALL CONV //CLR TR0 ;停止中断 RET P_KEY20: ;K3键是否第三次按下? MOV A,KEY_C CJNE A,#0015H,P_KEY21 MOV DPTR,#MADJ13 ;显示执行信息 MOV A,#1 CALL LCD_PRINT CALL CONV //SETB TR0 ;启动中断 RET P_KEY21: ;K3键是否第四次按下? MOV A,KEY_C CJNE A,#0016H,P_KEY22 MOV DPTR,#MADJ14 ;显示执行信息 MOV A,#1 CALL LCD_PRINT CALL CONV // CLR TR0 ;启动中断 P_KEY22: ;K3键是否第二次按下? MOV A,KEY_C CJNE A,#0017H,P_KEY23 MOV DPTR,#MADJ15 ;显示执行信息 MOV A,#1 CALL LCD_PRINT CALL CONV //CLR TR0 ;停止中断 RET P_KEY23: ;K3键是否第三次按下? MOV A,KEY_C CJNE A,#0018H,P_KEY24 MOV DPTR,#MADJ16 ;显示执行信息 MOV A,#1 CALL LCD_PRINT CALL CONV //SETB TR0 ;启动中断 RET P_KEY24: ;K3键是否第四次按下? MOV A,KEY_C CJNE A,#0019H,P_KEY25 MOV DPTR,#MADJ17 ;显示执行信息 MOV A,#1 CALL LCD_PRINT CALL CONV // CLR TR0 ;启动中断 P_KEY25: RET P_KEYA: ; MOV A,KEY_VA JB ACC.0,P_KEYA3 INC KEY_CA MOV A,KEY_CA ;K3键是否第一次按下? CJNE A,#0001H,P_KEYA1 MOV DPTR,#MADJA0 ;显示执行信息 MOV A,#1 ; CALL LCD_PRINT CALL CONV //SETB TR0 ;启动中断 // MOV DATA1,#1 RET P_KEYA1: ;K3键是否第二次按下? MOV A,KEY_CA CJNE A,#0002H,P_KEYA2 MOV DPTR,#MADJA0 ;显示执行信息 MOV A,#1 CALL LCD_PRINT CALL CONV //CLR TR0 ;停止中断 RET P_KEYA2: ;K3键是否第三次按下? MOV A,KEY_CA CJNE A,#0003H,P_KEYA3 MOV DPTR,#MADJA0 ;显示执行信息 MOV A,#1 CALL LCD_PRINT CALL CONV //SETB TR0 ;启动中断 RET P_KEYA3: ;K3键是否第四次按下? MOV A,KEY_CA CJNE A,#04H,P_KEYA4 MOV DPTR,#MADJA0 ;显示执行信息 MOV A,#1 CALL LCD_PRINT CALL CONV // CLR TR0 ;启动中断 P_KEYA4: ;K3键是否第二次按下? MOV A,KEY_CA CJNE A,#05H,P_KEYA5 MOV DPTR,#MADJA0 ;显示执行信息 MOV A,#1 CALL LCD_PRINT CALL CONV //CLR TR0 ;停止中断 RET P_KEYA5: ;K3键是否第三次按下? MOV A,KEY_CA CJNE A,#0006H,P_KEYA6 MOV DPTR,#MADJA0 ;显示执行信息 MOV A,#1 CALL LCD_PRINT CALL CONV //SETB TR0 ;启动中断 RET P_KEYA6: ;K3键是否第四次按下? MOV A,KEY_CA CJNE A,#07H,P_KEYA7 MOV DPTR,#MADJA0 ;显示执行信息 MOV A,#1 CALL LCD_PRINT CALL CONV // CLR TR0 ;启动中断 P_KEYA7: ;K3键是否第二次按下? MOV A,KEY_CA CJNE A,#08H,P_KEYA8 MOV DPTR,#MADJA ;显示执行信息 MOV A,#1 CALL LCD_PRINT CALL CONV //CLR TR0 ;停止中断 RET P_KEYA8: ;K3键是否第三次按下? MOV A,KEY_CA CJNE A,#0009H,P_KEYA9 MOV DPTR,#MADJA0 ;显示执行信息 MOV A,#1 CALL LCD_PRINT CALL CONV //SETB TR0 ;启动中断 RET P_KEYA9: ;K3键是否第四次按下? MOV A,KEY_CA CJNE A,#000AH,P_KEYA10 MOV DPTR,#MADJA1 ;显示执行信息 MOV A,#1 CALL LCD_PRINT CALL CONV // CLR TR0 ;启动中断 P_KEYA10: ;K3键是否第二次按下? MOV A,KEY_CA CJNE A,#000BH,P_KEYA11 MOV DPTR,#MADJA2 ;显示执行信息 MOV A,#1 CALL LCD_PRINT CALL CONV //CLR TR0 ;停止中断 RET P_KEYA11: ;K3键是否第三次按下? MOV A,KEY_CA CJNE A,#000CH,P_KEYA12 MOV DPTR,#MADJA3 ;显示执行信息 MOV A,#1 CALL LCD_PRINT CALL CONV //SETB TR0 ;启动中断 RET P_KEYA12: ;K3键是否第四次按下? MOV A,KEY_CA CJNE A,#000DH,P_KEYA13 MOV DPTR,#MADJA4 ;显示执行信息 MOV A,#1 CALL LCD_PRINT CALL CONV // CLR TR0 ;启动中断 P_KEYA13: ;K3键是否第二次按下? MOV A,KEY_CA CJNE A,#000EH,P_KEYA14 MOV DPTR,#MADJA5 ;显示执行信息 MOV A,#1 CALL LCD_PRINT CALL CONV //CLR TR0 ;停止中断 RET P_KEYA14: ;K3键是否第三次按下? MOV A,KEY_CA CJNE A,#000FH,P_KEYA15 MOV DPTR,#MADJA6 ;显示执行信息 MOV A,#1 CALL LCD_PRINT CALL CONV //SETB TR0 ;启动中断 RET P_KEYA15: ;K3键是否第四次按下? MOV A,KEY_CA CJNE A,#0010H,P_KEYA16 MOV DPTR,#MADJA7 ;显示执行信息 MOV A,#1 CALL LCD_PRINT CALL CONV // CLR TR0 ;启动中断 P_KEYA16: ;K3键是否第二次按下? MOV A,KEY_CA CJNE A,#0011H,P_KEYA17 MOV DPTR,#MADJA8 ;显示执行信息 MOV A,#1 CALL LCD_PRINT CALL CONV //CLR TR0 ;停止中断 RET P_KEYA17: ;K3键是否第三次按下? MOV A,KEY_CA CJNE A,#0012H,P_KEYA18 MOV DPTR,#MADJA9 ;显示执行信息 MOV A,#1 CALL LCD_PRINT CALL CONV //SETB TR0 ;启动中断 RET P_KEYA18: ;K3键是否第四次按下? MOV A,KEY_CA CJNE A,#0013H,P_KEYA19 MOV DPTR,#MADJA10 ;显示执行信息 MOV A,#1 CALL LCD_PRINT CALL CONV // CLR TR0 ;启动中断 P_KEYA19: ;K3键是否第二次按下? MOV A,KEY_CA CJNE A,#0014H,P_KEYA20 MOV DPTR,#MADJA11 ;显示执行信息 MOV A,#1 CALL LCD_PRINT CALL CONV //CLR TR0 ;停止中断 RET P_KEYA20: ;K3键是否第三次按下? MOV A,KEY_CA CJNE A,#0015H,P_KEYA21 MOV DPTR,#MADJA12 ;显示执行信息 MOV A,#1 CALL LCD_PRINT CALL CONV //SETB TR0 ;启动中断 RET P_KEYA21: ;K3键是否第四次按下? MOV A,KEY_CA CJNE A,#0016H,P_KEYA22 MOV DPTR,#MADJA13 ;显示执行信息 MOV A,#1 CALL LCD_PRINT CALL CONV // CLR TR0 ;启动中断 P_KEYA22: ;K3键是否第二次按下? MOV A,KEY_CA CJNE A,#0017H,P_KEYA23 MOV DPTR,#MADJA14 ;显示执行信息 MOV A,#1 CALL LCD_PRINT CALL CONV //CLR TR0 ;停止中断 RET P_KEYA23: ;K3键是否第三次按下? MOV A,KEY_CA CJNE A,#0018H,P_KEYA24 MOV DPTR,#MADJA15 ;显示执行信息 MOV A,#1 CALL LCD_PRINT CALL CONV //SETB TR0 ;启动中断 RET P_KEYA24: ;K3键是否第四次按下? MOV A,KEY_CA CJNE A,#0019H,P_KEYA25 MOV DPTR,#MADJA16 ;显示执行信息 MOV A,#1 CALL LCD_PRINT CALL CONV // CLR TR0 ;启动中断 P_KEYA25: RET P_KEYB: ; MOV A,KEY_VB JB ACC.0,P_KEYB3 INC KEY_CB MOV A,KEY_CB ;K3键是否第一次按下? CJNE A,#0001H,P_KEYB1 MOV DPTR,#MADJB0 ;显示执行信息 MOV A,#1 ; CALL LCD_PRINT CALL CONV //SETB TR0 ;启动中断 // MOV DATA2,#1 RET P_KEYB1: ;K3键是否第二次按下? MOV A,KEY_CB CJNE A,#0002H,P_KEYB2 MOV DPTR,#MADJB0 ;显示执行信息 MOV A,#1 CALL LCD_PRINT CALL CONV //CLR TR0 ;停止中断 RET P_KEYB2: ;K3键是否第三次按下? MOV A,KEY_CB CJNE A,#0003H,P_KEYB3 MOV DPTR,#MADJB0 ;显示执行信息 MOV A,#1 CALL LCD_PRINT CALL CONV //SETB TR0 ;启动中断 RET P_KEYB3: ;K3键是否第四次按下? MOV A,KEY_CB CJNE A,#0004H,P_KEYB4 MOV DPTR,#MADJB0 ;显示执行信息 MOV A,#1 CALL LCD_PRINT CALL CONV // CLR TR0 ;启动中断 P_KEYB4: ;K3键是否第四次按下? MOV A,KEY_CB CJNE A,#0005H,P_KEYB5 MOV DPTR,#MADJB0 ;显示执行信息 MOV A,#1 CALL LCD_PRINT CALL CONV // CLR TR0 ;启动中断 P_KEYB5: ;K3键是否第二次按下? MOV A,KEY_CB CJNE A,#0006H,P_KEYB6 MOV DPTR,#MADJB0 ;显示执行信息 MOV A,#1 CALL LCD_PRINT CALL CONV //CLR TR0 ;停止中断 RET P_KEYB6: ;K3键是否第三次按下? MOV A,KEY_CB CJNE A,#0007H,P_KEYB7 MOV DPTR,#MADJB ;显示执行信息 MOV A,#1 CALL LCD_PRINT CALL CONV //SETB TR0 ;启动中断 RET P_KEYB7: ;K3键是否第四次按下? MOV A,KEY_CB CJNE A,#0008H,P_KEYB8 MOV DPTR,#MADJB0 ;显示执行信息 MOV A,#1 CALL LCD_PRINT CALL CONV // CLR TR0 ;启动中断 P_KEYB8: ;K3键是否第四次按下? MOV A,KEY_CB CJNE A,#0009H,P_KEYB9 MOV DPTR,#MADJB1 ;显示执行信息 MOV A,#1 CALL LCD_PRINT CALL CONV // CLR TR0 ;启动中断 P_KEYB9: ;K3键是否第二次按下? MOV A,KEY_CB CJNE A,#000AH,P_KEYB10 MOV DPTR,#MADJB2 ;显示执行信息 MOV A,#1 CALL LCD_PRINT CALL CONV //CLR TR0 ;停止中断 RET P_KEYB10: ;K3键是否第三次按下? MOV A,KEY_CB CJNE A,#000BH,P_KEYB11 MOV DPTR,#MADJB3 ;显示执行信息 MOV A,#1 CALL LCD_PRINT CALL CONV //SETB TR0 ;启动中断 RET P_KEYB11: ;K3键是否第四次按下? MOV A,KEY_CB CJNE A,#000CH,P_KEYB12 MOV DPTR,#MADJB4 ;显示执行信息 MOV A,#1 CALL LCD_PRINT CALL CONV // CLR TR0 ;启动中断 P_KEYB12: ;K3键是否第四次按下? MOV A,KEY_CB CJNE A,#000DH,P_KEYB13 MOV DPTR,#MADJB5 ;显示执行信息 MOV A,#1 CALL LCD_PRINT CALL CONV // CLR TR0 ;启动中断 P_KEYB13: ;K3键是否第二次按下? MOV A,KEY_CB CJNE A,#000EH,P_KEYB14 MOV DPTR,#MADJB6 ;显示执行信息 MOV A,#1 CALL LCD_PRINT CALL CONV //CLR TR0 ;停止中断 RET P_KEYB14: ;K3键是否第三次按下? MOV A,KEY_CB CJNE A,#000FH,P_KEYB15 MOV DPTR,#MADJB7 ;显示执行信息 MOV A,#1 CALL LCD_PRINT CALL CONV //SETB TR0 ;启动中断 RET P_KEYB15: ;K3键是否第四次按下? MOV A,KEY_CB CJNE A,#0010H,P_KEYB16 MOV DPTR,#MADJB8 ;显示执行信息 MOV A,#1 CALL LCD_PRINT CALL CONV // CLR TR0 ;启动中断 P_KEYB16: ;K3键是否第四次按下? MOV A,KEY_CB CJNE A,#0011H,P_KEYB17 MOV DPTR,#MADJB9 ;显示执行信息 MOV A,#1 CALL LCD_PRINT CALL CONV // CLR TR0 ;启动中断 P_KEYB17: ;K3键是否第二次按下? MOV A,KEY_CB CJNE A,#0012H,P_KEYB18 MOV DPTR,#MADJB10 ;显示执行信息 MOV A,#1 CALL LCD_PRINT CALL CONV //CLR TR0 ;停止中断 RET P_KEYB18: ;K3键是否第三次按下? MOV A,KEY_CB CJNE A,#0013H,P_KEYB19 MOV DPTR,#MADJB11 ;显示执行信息 MOV A,#1 CALL LCD_PRINT CALL CONV //SETB TR0 ;启动中断 RET P_KEYB19: ;K3键是否第四次按下? MOV A,KEY_CB CJNE A,#0014H,P_KEYB20 MOV DPTR,#MADJB12 ;显示执行信息 MOV A,#1 CALL LCD_PRINT CALL CONV // CLR TR0 ;启动中断 P_KEYB20: ;K3键是否第四次按下? MOV A,KEY_CB CJNE A,#0015H,P_KEYB21 MOV DPTR,#MADJB13 ;显示执行信息 MOV A,#1 CALL LCD_PRINT CALL CONV // CLR TR0 ;启动中断 P_KEYB21: ;K3键是否第二次按下? MOV A,KEY_CB CJNE A,#0016H,P_KEYB22 MOV DPTR,#MADJB14 ;显示执行信息 MOV A,#1 CALL LCD_PRINT CALL CONV //CLR TR0 ;停止中断 RET P_KEYB22: ;K3键是否第三次按下? MOV A,KEY_CB CJNE A,#0017H,P_KEYB23 MOV DPTR,#MADJB15 ;显示执行信息 MOV A,#1 CALL LCD_PRINT CALL CONV //SETB TR0 ;启动中断 RET P_KEYB23: ;K3键是否第四次按下? MOV A,KEY_CB CJNE A,#0018H,P_KEYB24 MOV DPTR,#MADJB16 ;显示执行信息 MOV A,#1 CALL LCD_PRINT CALL CONV // CLR TR0 ;启动中断 P_KEYB24: ;K3键是否第四次按下? MOV A,KEY_CB CJNE A,#0019H,P_KEYB25 MOV DPTR,#MADJB17 ;显示执行信息 MOV A,#1 CALL LCD_PRINT CALL CONV // CLR TR0 ;启动中断 P_KEYB25: ;K3键是否第二次按下? MOV A,KEY_CB CJNE A,#001AH,P_KEYB26 MOV DPTR,#MADJB18 ;显示执行信息 MOV A,#1 CALL LCD_PRINT CALL CONV //CLR TR0 ;停止中断 RET P_KEYB26: ;K3键是否第三次按下? MOV A,KEY_CB CJNE A,#001BH,P_KEYB27 MOV DPTR,#MADJB19 ;显示执行信息 MOV A,#1 CALL LCD_PRINT CALL CONV //SETB TR0 ;启动中断 RET P_KEYB27: ;K3键是否第四次按下? MOV A,KEY_CB CJNE A,#001CH,P_KEYB28 MOV DPTR,#MADJB20 ;显示执行信息 MOV A,#1 CALL LCD_PRINT CALL CONV // CLR TR0 ;启动中断 P_KEYB28: ;K3键是否第四次按下? MOV A,KEY_CB CJNE A,#001DH,P_KEYB29 MOV DPTR,#MADJB21 ;显示执行信息 MOV A,#1 CALL LCD_PRINT CALL CONV // CLR TR0 ;启动中断 P_KEYB29: ;K3键是否第二次按下? MOV A,KEY_CB CJNE A,#001EH,P_KEYB30 MOV DPTR,#MADJB22 ;显示执行信息 MOV A,#1 CALL LCD_PRINT CALL CONV //CLR TR0 ;停止中断 RET P_KEYB30: ;K3键是否第三次按下? MOV A,KEY_CB CJNE A,#001FH,P_KEYB31 MOV DPTR,#MADJB23 ;显示执行信息 MOV A,#1 CALL LCD_PRINT CALL CONV //SETB TR0 ;启动中断 RET P_KEYB31: ;K3键是否第四次按下? MOV A,KEY_CB CJNE A,#0020H,P_KEYB32 MOV DPTR,#MADJB24 ;显示执行信息 MOV A,#1 CALL LCD_PRINT CALL CONV // CLR TR0 ;启动中断 P_KEYB32: ;K3键是否第四次按下? MOV A,KEY_CB CJNE A,#0021H,P_KEYB33 MOV DPTR,#MADJB25 ;显示执行信息 MOV A,#1 CALL LCD_PRINT CALL CONV // CLR TR0 ;启动中断 P_KEYB33: RET ;------------------------------------------------------- SKEY: CLR A ;判是否有键按下子程序 MOV KEY_S,A MOV C,K1 RLC A ORL KEY_S,A MOV A,KEY_S XRL A,KEY_V ;有键按下,A 中内容不为零 RET SKEY1: CLR A ;判是否有键按下子程序 MOV KEY_SA,A MOV C,K2 RLC A ORL KEY_SA,A MOV A,KEY_SA XRL A,KEY_VA ;有键按下,A 中内容不为零 RET SKEY2: CLR A ;判是否有键按下子程序 MOV KEY_SB,A MOV C,K3 RLC A ORL KEY_SB,A MOV A,KEY_SB XRL A,KEY_VB ;有键按下,A 中内容不为零 RET ;-------------------------------------------------------- LMESS1: DB " ANJIAN JISHUQI ",0 ;LCD 第一行显示消息 LMESS2: DB "TIME ",0 ;LCD 第二行显示消息 ;-------------------------------------------------------- INIT: CLR A // MOV KEY_C,A ;初始化控制变量 MOV SEC0,A // MOV SEC,A // MOV MIN,A // MOV HOUR,A MOV SEC,#01H //设置初始时间 MOV MIN,#10H MOV HOUR, #0BH MOV RI1,#14H //设置初始时间 MOV YUE,#06H MOV NIAN, #14H MOV NIAN1,#14H MOV KEY_S,A MOV KEY_V,A SETB BEEP CLR TR0 RET ;------------------------------------------------------------ INIT_TIMER: ;初始化定时器接口 MOV TMOD,#01H ;设置定时器0 工作模式为模式1 MOV IE, #82H ;启用定时器0 中断产生 MOV TL0,#TLOW MOV TH0,#THIGH RET ;------------------------------------------------------------- T0_INT: PUSH ACC ;定时器0计时中断程序 MOV TL0,#TLOW MOV TH0,#THIGH INC SEC0 MOV A,SEC0 ;10ms 计数值加1 //CJNE A,#100,TT CJNE A,#100,TT MOV SEC0,#0 INC SEC ;秒加1 MOV A,SEC CJNE A,#60,TT INC MIN ;分加1 MOV SEC,#0 MOV A,MIN CJNE A,#60,TT INC HOUR ;时加1 MOV MIN,#0 MOV A,HOUR CJNE A,#24,TT INC RI1 ;时加1 MOV HOUR,#0 MOV A,RI1 CJNE A,#31,TT INC YUE ;时加1 MOV RI1,#1 MOV A,YUE CJNE A,#13,TT INC NIAN ;时加1 MOV YUE,#1 MOV A,NIAN CJNE A,#10,TT INC NIAN1 ;时加1 MOV NIAN,#0 MOV A,NIAN1 CJNE A,#10,TT MOV SEC0,#0 MOV SEC,#0 ;秒、分、时单元清0 MOV MIN,#0 MOV HOUR,#0 MOV RI1,#0 MOV YUE,#0 MOV NIAN,#0 MOV NIAN1,#0 TT: POP ACC RETI ;------------------------------------------------------- ; 在第二行显示数字 ;------------------------------------------------------- SHOW_DIG2: ;在 LCD 的第二行显示数字 MOV B,#10 ;设置被除数 DIV AB ;结果A存商数,B存余数 ADD A,#30H ;A为十位数,转换为字符 PUSH B ;B放入堆栈暂存 MOV B,X ;设置 LCD 显示的位置 CALL LCDP2 ;由 LCD 显示出来 POP B ; MOV A,B ;B为个位数 ADD A,#30H ;转换为字符 INC X ;LCD 显示位置加1 MOV B,X ;设置 LCD 显示的位置 CALL LCDP2 ;由 LCD 显示出来 RET ;------------------------------------------- ;转换为 ASCII 码并显示 ;------------------------------------------- CONV: MOV A,NIAN1 ;加载小时数据 MOV X,#0 ;设置位置 CALL SHOW_DIG2 ;显示数据 //INC X ; // MOV A,#'/' ; MOV B,X ; CALL LCDP2 ; MOV A,NIAN ;加载小时数据 INC X ;设置位置 CALL SHOW_DIG2 ;显示数据 INC X ; MOV A,#'/' ; MOV B,X ; CALL LCDP2 ; MOV A,YUE ;加载小时数据 INC X ;设置位置 CALL SHOW_DIG2 ;显示数据 INC X ; MOV A,#'/' ; MOV B,X ; CALL LCDP2 ; MOV A,RI1 ;加载小时数据 INC X ;设置位置 CALL SHOW_DIG2 ;显示数据 INC X ; MOV A,#'-' ; MOV B,X ; CALL LCDP2 ; MOV A,HOUR ;加载小时数据 // MOV X,#5 ;设置位置 INC X ;设置位置 CALL SHOW_DIG2 ;显示数据 INC X ; MOV A,#':' ; MOV B,X ; CALL LCDP2 ; MOV A,MIN ;加载分钟数据 INC X ;设置位置 CALL SHOW_DIG2 ;显示数据 INC X ; MOV A,#':' ; MOV B,X ; CALL LCDP2 ; MOV A,SEC ;加载秒数数据 INC X ;设置位置 CALL SHOW_DIG2 ;显示数据 INC X ; MOV A,#':' ; MOV B,X ; CALL LCDP2 ; MOV A,SEC0 ;加载秒数数据 INC X ;设置位置 CALL SHOW_DIG2 RET ;--------------------------------------------------------- ; LCD CONTROL ;--------------------------------------------------------- SET_LCD: ;对 LCD 做初始化设置及测试 CLR EN CALL INIT_LCD ;初始化 LCD MOV R5,#10 CALL DELAY MOV DPTR,#LMESS1 ;指针指到显示消息1 MOV A,#1 ;显示在第一行 CALL LCD_PRINT // MOV DPTR,#LMESS2 ;指针指到显示消息2 // MOV A,#2 ;显示在第二行 // CALL LCD_PRINT RET ;---------------------------------------------------------- INIT_LCD1: ;LCD 控制指令初始化 MOV A,#38H ;双列显示,字形5*7点阵 CALL WCOM ; call delay1 MOV A,#0CH ;开显示,显示光标,光标不闪烁 CALL WCOM ; call delay1 MOV A,#01H ;清除 LCD 显示屏 CALL WCOM ; call delay1 RET ;---------------------------------------------------------- ENABLE: ;写指令 CLR RS ;RS=L,RW=L,E=高脉冲 CLR RW ;D0-D7=指令码 SETB EN ACALL DELAY1 CLR EN RET ;---------------------------------------------------------- LCD_PRINT: ;在LCD的第一行或第二行显示字符 CJNE A,#1,LINE2 ;判断是否为第一行 LINE1: MOV A,#80H ;设置 LCD 的第一行地址 CALL WCOM ;写入命令 CALL CLR_LINE ;清除该行字符数据 MOV A,#80H ;设置 LCD 的第一行地址 CALL WCOM ;写入命令 JMP FILL LINE2: MOV A,#0C0H ;设置 LCD 的第二行地址 CALL WCOM ;写入命令 CALL CLR_LINE ;清除该行字符数据 MOV A,#0C0H ;设置 LCD 的第二行地址 CALL WCOM FILL: CLR A ;填入字符 MOVC A,@A+DPTR ;由消息区取出字符 CJNE A,#0,LC1 ;判断是否为结束码 RET LC1: CALL WDATA ;写入数据 INC DPTR ;指针加1 JMP FILL ;继续填入字符 RET ;------------------------------------------------------- CLR_LINE: ;清除该行 LCD 的字符 MOV R0,#24 CL1: MOV A,#' ' CALL WDATA DJNZ R0,CL1 RET ;------------------------------------------------------- DE: MOV R7,#250 ;延时500微秒 DJNZ R7,$ RET ;------------------------------------------------------- EN1: CLR RW SETB EN ;短脉冲产生启用信号 CALL DE CLR EN CALL DE RET ;------------------------------------------------------ INIT_LCD: ;8位I/O控制 LCD 接口初始化 MOV P0,#38H ;双列显示,字形5*7点阵 call enable call delay1 MOV P0,#38H ;双列显示,字形5*7点阵 call enable call delay1 MOV P0,#38H ;双列显示,字形5*7点阵 call enable call delay1 CALL INIT_LCD1 RET ;----------------------------------------------------- WCOM: ;以8位控制方式将命令写至LCD MOV P0,A ;写入命令 call enable RET ;----------------------------------------------------- WDATA: ;以8位控制方式将数据写至LCD MOV P0,A ;写入数据 SETB RS ;设置写入数据 CALL EN1 RET ;----------------------------------------------------- ;第二行显示字符 ;----------------------------------------------------- LCDP2: ;在LCD的第二行显示字符 PUSH ACC ; MOV A,B ;设置显示地址 ADD A,#0C0H ;设置LCD的第二行地址 CALL WCOM ;写入命令 POP ACC ;由堆栈取出A CALL WDATA ;写入数据 RET ;---------------------------------------------------- DELAY: ;延时10MS MOV R6,#50 D1: MOV R7,#100 DJNZ R7,$ DJNZ R6,D1 DJNZ R5,DELAY RET ;----------------------------------------------------- DELAY1: ;延时5MS MOV R6,#25 D2: MOV R7,#100 DJNZ R7,$ DJNZ R6,D2 RET ;----------------------------------------------------- BZ: ;蜂鸣器 MOV R6,#100 B1: CALL DEX CPL BEEP DJNZ R6,B1 MOV R5,#10 CALL DELAY RET DEX: MOV R7,#180 DE1: NOP DJNZ R7,DE1 RET ;------------------------------------------------- MMENU: DB " AD COUNT: 0 ",0 MADJ: DB " AD COUNT: 0 ",0 MADJ0: DB " AD COUNT: 1 ",0 MADJ1: DB " AD COUNT: 2 ",0 MADJ2: DB " AD COUNT: 3 ",0 MADJ3: DB " AD COUNT: 4 ",0 MADJ4: DB " AD COUNT: 5 ",0 MADJ5: DB " AD COUNT: 6 ",0 MADJ6: DB " AD COUNT: 7 ",0 MADJ7: DB " AD COUNT: 8 ",0 MADJ8: DB " AD COUNT: 9 ",0 MADJ9: DB " AD COUNT: 10 ",0 MADJ10: DB " AD COUNT: 11 ",0 MADJ11: DB " AD COUNT: 12 ",0 MADJ12: DB " AD COUNT: 13 ",0 MADJ13: DB " AD COUNT: 14 ",0 MADJ14: DB " AD COUNT: 15 ",0 MADJ15: DB " AD COUNT: 16 ",0 MADJ16: DB " AD COUNT: 17 ",0 MADJ17: DB " AD COUNT: 18 ",0 MADJ18: DB " AD COUNT: 19 ",0 MADJ19: DB " AD COUNT: 20 ",0 MADJ20: DB " AD COUNT: 21 ",0 MADJ21: DB " AD COUNT: 22 ",0 MADJ22: DB " AD COUNT: 23 ",0 MADJ23: DB " AD COUNT: 24 ",0 MADJ24: DB " AD COUNT: 25 ",0 MADJ25: DB " AD COUNT: 26 ",0 MADJ26: DB " AD COUNT: 27 ",0 MADJ27: DB " AD COUNT: 28 ",0 MADJ28: DB " AD COUNT: 29 ",0 MADJ29: DB " AD COUNT: 30 ",0 MADJA: DB " BD COUNT: 0 ",0 MADJA0: DB " BD COUNT: 1 ",0 MADJA1: DB " BD COUNT: 2 ",0 MADJA2: DB " BD COUNT: 3 ",0 MADJA3: DB " BD COUNT: 4 ",0 MADJA4: DB " BD COUNT: 5 ",0 MADJA5: DB " BD COUNT: 6 ",0 MADJA6: DB " BD COUNT: 7 ",0 MADJA7: DB " BD COUNT: 8 ",0 MADJA8: DB " BD COUNT: 9 ",0 MADJA9: DB " BD COUNT: 10 ",0 MADJA10: DB " BD COUNT: 11 ",0 MADJA11: DB " BD COUNT: 12 ",0 MADJA12: DB " BD COUNT: 13 ",0 MADJA13: DB " BD COUNT: 14 ",0 MADJA14: DB " BD COUNT: 15 ",0 MADJA15: DB " BD COUNT: 16 ",0 MADJA16: DB " BD COUNT: 17 ",0 MADJA17: DB " BD COUNT: 18 ",0 MADJA18: DB " BD COUNT: 19 ",0 MADJA19: DB " BD COUNT: 20 ",0 MADJA20: DB " BD COUNT: 21 ",0 MADJA21: DB " BD COUNT: 22 ",0 MADJA22: DB " BD COUNT: 23 ",0 MADJA23: DB " BD COUNT: 24 ",0 MADJA24: DB " BD COUNT: 25 ",0 MADJA25: DB " BD COUNT: 26 ",0 MADJA26: DB " BD COUNT: 27 ",0 MADJA27: DB " BD COUNT: 28 ",0 MADJA28: DB " BD COUNT: 29 ",0 MADJA29: DB " BD COUNT: 30 ",0 MADJA30: DB " BD COUNT: 31 ",0 MADJA31: DB " BD COUNT: 32 ",0 MADJB: DB " CD COUNT: 0 ",0 MADJB0: DB " CD COUNT: 1 ",0 MADJB1: DB " CD COUNT: 2 ",0 MADJB2: DB " CD COUNT: 3 ",0 MADJB3: DB " CD COUNT: 4 ",0 MADJB4: DB " CD COUNT: 5 ",0 MADJB5: DB " CD COUNT: 6 ",0 MADJB6: DB " CD COUNT: 7 ",0 MADJB7: DB " CD COUNT: 8 ",0 MADJB8: DB " CD COUNT: 9 ",0 MADJB9: DB " CD COUNT: 10 ",0 MADJB10: DB " CD COUNT: 11 ",0 MADJB11: DB " CD COUNT: 12 ",0 MADJB12: DB " CD COUNT: 13 ",0 MADJB13: DB " CD COUNT: 14 ",0 MADJB14: DB " CD COUNT: 15 ",0 MADJB15: DB " CD COUNT: 16 ",0 MADJB16: DB " CD COUNT: 17 ",0 MADJB17: DB " CD COUNT: 18 ",0 MADJB18: DB " CD COUNT: 19 ",0 MADJB19: DB " CD COUNT: 20 ",0 MADJB20: DB " CD COUNT: 21 ",0 MADJB21: DB " CD COUNT: 22 ",0 MADJB22: DB " CD COUNT: 23 ",0 MADJB23: DB " CD COUNT: 24 ",0 MADJB24: DB " CD COUNT: 25 ",0 MADJB25: DB " CD COUNT: 26 ",0 MADJB26: DB " CD COUNT: 27 ",0 MADJB27: DB " CD COUNT: 28 ",0 MADJB28: DB " CD COUNT: 29 ",0 MADJB29: DB " CD COUNT: 30 ",0 MADJB30: DB " CD COUNT: 31 ",0 MADJB31: DB " CD COUNT: 32 ",0 MADJB32: DB " CD COUNT: 33 ",0 MADJB33: DB " CD COUNT: 34 ",0 MADJB34: DB " CD COUNT: 35 ",0 MADJB35: DB " CD COUNT: 36 ",0 MADJB36: DB " CD COUNT: 37 ",0 MADJB37: DB " CD COUNT: 38 ",0 MADJB38: DB " CD COUNT: 39 ",0 ;------------------------------------------------- MENU: ;LCD 显示工作菜单消息 MOV DPTR,#MMENU MOV A,#1 CALL LCD_PRINT RET ;------------------------------------------------- END 电路图如下 |
| 发帖须知: 1,发帖请遵守《计算机信息网络国际联网安全保护管理办法》、《互联网信息服务管理办法》、 《互联网电子公告服务管理规定》、《维护互联网安全的决定》等法律法规。 2,请对您的言论负责,我们将保留您的上网记录和发帖信息。 3,在此发帖表示认同我们的条款,我们有权利对您的言论进行审核、删除或者采取其他在法律、地方法规等条款规定之内的管理操作。 |