单片机定时器中断实现50ms方波和1分钟方波
{ "title": "ORG 0000H\n SJMP START\n ORG 001BH ;T1中断入口.\n SJMP T1_INT\n ORG 0030H\nSTART:\n MOV 50H,#60\n MOV 51H,#1\n JNB P1.0,LOOP1\n JNB P1.1,LOOP2\t;按键扫描\n AJMP START\n\nLOOP1:\n JNB P1.0,$\t;等待按键松开\n MOV TMOD, #10H ;设置T1定时方式1\n MOV TH1, #3CH ;送入初始值.\n MOV TL1, #0B0H ;定时50MS\n MOV IE, #10001000B ;开放总中断和T1中断.\n SETB TR1 ;启动T1\nLP: JB P1.0,LP\t ;等待按键再次被按下\n JNB P1.0,WAIT\t ;按键被再次按下\n\nWAIT: JNB P1.0,$\t ;等待按键松开\n CLR TR1\t\t ;关闭定时器\n JB P1.0,START\t ;返回主程序\n\nT1_INT:\n MOV TH1, #3CH ;重新送入初始值.\n MOV TL1, #0B0H ;定时\n DJNZ 50H, T1_INT\n DJNZ 51H, T1_INT ;等待1min\n CPL P3.5 ;输出方波\n RETI ;中断返回\n\nLOOP2: JNB P1.1,$ ;等待按键松开\nLP1: ACALL DELAY_500us\n CPL P3.4\t\t ;取反,生成方波\n JNB P1.1,BACK\t ;按键再次被按下,返回主程序\n JB P1.1,LP1\nBACK: JNB P1.1,$\n JB P1.1,START\n\nDELAY_500us:\n MOV R0,#249\n DJNZ R0,$\n RET\nEND", "description": "本程序使用单片机定时器中断实现两个方波输出,其中一个方波周期为50ms,另一个方波周期为1分钟。程序使用了按键扫描功能,通过按键控制方波的输出。", "keywords": "单片机, 定时器中断, 方波, 按键扫描"}
原文地址: https://www.cveoy.top/t/topic/pwrP 著作权归作者所有。请勿转载和采集!