早教吧 育儿知识 作业答案 考试题库 百科 知识分享

单片机定时器应用实验用80C51内部定时器1,按方式1工作,即作为16位定时器使用,每0.05秒钟T1溢出中断一次.P1口的P1.0-P1.7分别接八个发光二极管.要求编写程序模拟一时序控制装置.开机后第一秒

题目详情
单片机定时器应用实验
用80C51内部定时器1,按方式1工作,即作为16位定时器使用,每0.05秒钟T1溢出中断一次.P1口的P1.0-P1.7分别接八个发光二极管.要求编写程序模拟一时序控制装置.开机后第一秒钟L1,L3亮,第二秒钟L2,L4亮,第三秒钟L5,L7亮,第四秒钟L6,L8亮,第五秒L1,L3,L5,L7亮,第六秒钟L2,L4,L6,L8亮,第七秒钟八个二极管全亮,第八秒钟全灭,以后又从头开始,L1,L3亮,然后L2,L4亮.一直循环下去.
▼优质解答
答案和解析
完全一样的题目呀,真幸运,看我的吧(我的是8052的,没关系的):
汇编程序:
S1   EQU 30H
S2   EQU 31H
   ORG 0000H
   AJMP MAIN
   ORG 001BH
   AJMP INTT1
   ORG 0100H
MAIN:  ANL TMOD,#0FH
   ORL TMOD,#10H
   MOV TH1,#3CH
   MOV TL1,#0B0H
   SETB EA
   SETB ET1
   SETB TR1
   MOV DPTR,#TABLE
   MOV S1,#00H
   MOV S2,#00H
LP:   MOV A,S2
   MOVC A,@A+DPTR
   MOV P1,A
   AJMP LP
INTT1: PUSH ACC
   INC S1
   MOV A,S1
   CJNE A,#20,NEXTT1
   MOV S1,#00H
   INC S2
   ANL S2,#07H
NEXTT1: POP ACC
   RETI
TABLE: DB 05H,0AH,50H,0A0H,55H,0AAH,0FFH,00H
C语言程序:
#include
unsigned char s1=0,s2=0;
unsigned char code table[]=
{
0x05,0x0A,0x50,0xA0,0x55,0xAA,0xFF,0x00
};
void main()
{
TMOD=(TMOD&0X0F)|0X10;
TH1=0X3C;
TL1=0XB0;
EA=1;
ET1=1;
TR1=1;
while(1)
 {
 P1=table[s2];
 }
}
void t1(void) interrupt 3 using 0
{
s1++;
if(s1==20)
 {
 s1=0;
 s2++;
 s2=s2&0x07;
 }
}