不过!这个简单的流水灯我还是会的!我已经找到答案了!谢谢!
以下是答案程序: 设一个标志位flag, 以标志位的5种状态对应发光二极管的5种工作状态,如当flag=1;发光二极管工作在1,当flag=2;发光二极管工作在2,......!然后根据定时器定时功能,5秒到,刷新flag的值,程序如下; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;/*程序功能:定时5S到切换LED显示状态. ;作者:w418781840.2008.5.29 */ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; FLAG BIT 30H ;定义标志位 ORG 0 LJMP MAIN ORG 0BH LJMP AGA ;;;;;;主程序;;;;;;;;;;;; ORG 0030H MAIN: MOV FLAG,#01H ;标志位清0 MOV TMOD,#01H ;赋值50MS MOV TH0,#3CH MOV TL0,#0B0H MOV R0,#100 ;中断100*50=5S SETB EA SETB ET0 SETB TR0 SJMP $ ;;;;;;;;;中断服务程序;;;;;;;;;;;;;; AGA: MOV TH0,#3CH MOV TL0,#0B0H DJNZ R0,LOOP ;5S到否?否,返回 INC FLAG ;到,标志加1 MOV A,FLAG CJNE A,#05,L1 ;扫描5种状态了否? MOV FLAG,#01H ;是,归0,重新开始 ;;;;;;;;;切换程序;;;;;;;;;;;; L1: CJNE A,#01H,L2 ;判断是否是状态1?否,转判断2 LCALL LED1 ;是,调有状态1 SJMP LOOP ;返回 L2: CJNE A,#02H,L3 ; 以下跟上面判断相同 LCALL LED2 SJMP LOOP L3: CJNE A,#03H,L4 LCALL LED3 SJMP LOOP L4: CJNE A,#04H,L5 LCALL LED4 SJMP LOOP L5: CJNE A,#05H,LOOP LCALL LED5 LOOP: RETI ;;;;;;LED子程序区;;;;;;;;;; LED1: RET LED2: RET LED3: RET LED4: RET LED5: RET ///////////////// /////////////////////////////// /*程序功能:定时5S到切换LED显示状态. |