精华内容
下载资源
问答
  • #include<reg52.h> sbit led1 = P1^1; sbit led0 = P1^0; void main() { unsigned char cnt = 0,cnt1=0;... TR1 = 1;... TR0 = 1; while(1) { if(TF1 == 1) { TF1 = 0; TH1 = 0x3c;
    #include<reg52.h>
    sbit led1 = P1^1;
    sbit led0 = P1^0;
    
    void main()
    {
    	unsigned char cnt = 0,cnt1=0;
    	TMOD = 0x11;  
    	TH1 = 0x3c;
    	TL1 = 0xb0; 
    	TR1 = 1; 
    	
    	TH0= 0x3c;
    	TL0 = 0xb0; 
    	TR0 = 1;
    	while(1)
    	{
    		if(TF1 == 1)
    		{
    			TF1 = 0;
    			TH1 = 0x3c;
    			TL1 = 0xb0;
    		 	cnt++;
    		 	if(cnt == 20)
    		 	{
    		 		cnt = 0;
    			led1 = ~led1;
    		 	}
    		}
    		
    		if(TF0==1)
    		{
    				TF0 = 0;
    			TH0 = 0x3c;
    			TL0 = 0xb0;
    		 	cnt1++;
    		 	if(cnt1 == 20)
    		 	{
    		 		cnt1 = 0;
    				led0 = ~led0;
    		}
    	}
    }
    }
    
    
    展开全文
  • TR0=1; } } } } void SS() interrupt 4 { RI=0; p=SBUF; ES=0; SBUF=p; while(TI==0); TI=0; ES=1; flag1=1; } void sss()interrupt 1 { TH0=...
  • TCON [ TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 ] TF1/TF0 :定时器/计数器中断请求标志位当定时器计数满溢出回零时,有硬件置位,并可申请中断。当CPU响应中断并进入中  断服务程序后,自动清零。 TR1/TR0 :...

    一、定时器/计数器

    1.定时器控制寄存器(TCON)

    TCON    [  TF1  TR1  TF0  TR0   IE1  IT1  IE0  IT0  ]


    TF1/TF0 :定时器/计数器中断请求标志位当定时器计数满溢出回零时,有硬件置位,并可申请中断。当CPU响应中断并进入中             断服务程序后,自动清零。

    TR1/TR0 :定时器/计数器运行控制位,靠软件置位和清零。置位时开始工作,清零时停止工作。

     IE1 / IE0 :外部中断申请标志,检测到INT引脚出现的外部中断信号的下降沿时,由硬件置位,申请中断,进入中断服务程序后       被硬件自动清零。

     IT1 / IT0  :外部中断的类型控制位。IT=1,由下跳沿触发;IT=0,由低电平触发;由软件设 置或清除。


    2.工作方式寄存器(TMOD)

    TMOD    [  GATE   C/T   M1   M0   GATE   C/T   M1   M0   ]

                           高4位控制定时器1,低4位控制定时器0。

    GATE :门控位,当=1时,只有INT0\1引脚为高电平,且TR置1时,定时器/计数器才工作;当=0时,定时器/计数器仅受TR的控 制,而不管INT引脚电平的高低。

    C / T :定时器/计数器功能选择位。=0时,设置为定时功能;=1时,设置为计数功能。

    M1M0:工作方式选择位;

    M1M0=00:工作方式0(13位方式)
    M1M0=01:工作方式1(16位方式)
    M1M0=10:工作方式2(8位自动装入时间常数方式)
    M1M0=11:工作方式3(2个8位方式,仅对T0)

    二、中断系统

    INT0 :外部中断0,由P3.2端口线引入,低电平或下跳沿引起。
    INT1
     :外部中断1,由P3.3端口线引入,低电平或下跳沿引起。
    T0
        :定时器/计数器0中断,由T0计数溢出引起。
    T1
        :定时器/计数器0中断,由T1计数溢出引起。
    TI/RI
     :串行I/O中断,串行端口完成一帧字符发送/接收引起。

    1.中断允许寄存器(IE)

    IE  [   EA   _   _   ES   ET1   EX1   ET0   EX0   ]

    EA:全局中断允许。
    ES:串行I/O中断允许位。
    ETI:定时/计数器T1中断允许位。
    EXI:外部中断1允许位。
    EX0:外部中断0允许位。
    ET0:定时/计数器T0中断允许位。

    2.中断优先级寄存器(IP)

    IP  [   _   _   PT2   PS   PT1   PX1   PT0   PX0   ]

    PT2:定时器2=1高优先级,=0低优先级。
    PS
      :串行I/O中断优先级控制位。
    PT1:定时/计数1中断优先级。
    PX1:外部中断1中断优先级。
    PT0:定时器/计数器0中断优先级。

    PX0:外部中断0中断优先级。


    CPU执行中断的顺序:INT0---T0---INT1---T1---RI/TI


    三、串口控制寄存器(SCON)

    SCON   [   SM0   SM1   SM2   REN   TB8   RB8   TI   RI   ]


    SM0\SM1:串行口工作方式控制位。 00:-------0;01:-------1;10:---------2;11:-------3.

    =00  移位寄存器                                                           波特率=Fosc/12

    =01  10位UART(通用异步收发器)(8位数据)  波特率可变

    =10  11位UART(通用异步收发器)(9位数据)  波特率=Fosc/64或Fosc/32

    =11  11位UART(通用异步收发器)(9位数据)  波特率可变
    SM2         :用于方式2和方式3多机通讯控制位。

    =1  处于地址帧筛选状态,第9位即RB8=1,说明该帧为地址帧,地址信息可进入SBUF,并使RI=1;若RB8=0,        则丢掉并保持RI=0。

    =0  接收机处于地址帧筛选被禁止状态,不论RB8位何值均可使信息进入SBUF,并使RI=1,此时RB8为校验位。


    TI              :发送中断标志位。发送前必须软件清零,发送过程中TI保持0电平,发送完一帧后, 由硬件自动置1.如果在发送,      必须用软件清零。
    RI  :接收中断标志位。接收前必须软件清零,接收过程中保持低电平,接收完一帧后,硬 件置1.如果再接收,必须软件     清零。
    REN        :串行接收允许位。1-----允许。


    电源控制寄存器(PCON) 

    PCON   [   SMOD  _   _    _    _   _   _   _    ]

    SMOD=1,数据传输率加倍。 时间常数x=256-fosc*(SMOD+1)/(384*数据传输率)


    展开全文
  • 目录倒计时: 低级版没有闪用单片机的时间中断器(TR0-TR1)来进行计时来接近现实时间倒计时: 高配版 有闪倒计时到最后十秒进行闪烁 倒计时: 低级版没有闪 用单片机的时间中断器(TR0-TR1)来进行计时来接近现实时间...

    倒计时: 低级版没有闪

    用单片机的时间中断器(TR0-TR1)来进行计时来接近现实时间

    #include <reg52.h>
    #define uc8 unsigned char 
    sbit k1 = P3^4;
    sbit k2 = P3^5;
    sbit k3 = P3^6;
    sbit k4 = P3^7;
    bit db;
    sbit led1 = P2^4;
    sbit led2 = P2^5;
    sbit led3 = P2^6;
    sbit led4 = P2^7;
    uc8 i,sh = 0,bh = 0,m = 0,sm = 5,gf = 1,sf=0,ph = 0,count_num=0;
    unsigned char code xianshi[]={0x8f,0x4f,0x2f,0x1f};//ÊýÂë¹Ü¸÷λµÄÂë±í
    unsigned char code meidian[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//ÊýÂë¹Ü¸÷λµÄÂë±í(´øÉÏСµã)
    unsigned char code youdian[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};
    		unsigned int value = 0;
    unsigned int value_conut = 0;
    void delay(unsigned char jk){
    	unsigned char j,k;
      for(j=jk;j>0;j--)
        for(k=112;k>0;k--);
    }
    void delay1(unsigned int jk){
    	unsigned int j,k;
      for(j=jk;j>0;j--)
        for(k=112;k>0;k--);
    }
    void display1(uc8 wei,uc8 shu)//ÔÚÈÎÒâһλÏÔʾÈÎÒâµÄÊý×Ö
    {
       wei=wei-1;
       P2 |= 0xf0;//¸øP2.4-P2.7ÖÃ1
       if(wei == 2)
       	P0=youdian[shu];
       else
       P0=meidian[shu];
       P2=P2&xianshi[wei];//¸øP2ÐèÒªÏÔʾµÄÄÇһλÖÃ1£¬ÆäËûÖÃ0
    	delay(1);
    }
    void display(unsigned char a,unsigned char b,unsigned char c,unsigned char d){						  //Ò»´ÎÏÔʾ4¸öÊý×Ö£¬ÇÒÿλÏÔʾÊý×Ö¿É×Ô¶¨¡£
       display1(4,a);
       display1(3,b);
       display1(2,c);
       display1(1,d);
    }
    //void start_timer(){
    //	EA=1; //¿ª×ÜÖжÏ
    //   ET0=1;			 //¿ª¶¨Ê±Æ÷0ÖжÏ
    //	TR0=1;			 //´ò¿ª¶¨Ê±Æ÷
    //}
    //void stop_timer(){
    //   ET0=0;			 //¹Ø¶¨Ê±Æ÷0ÖжÏ
    //	EA=0;			 //¹Ø×ÜÖжÏ
    //	TR0=0;			 //¹Ø±Õ¶¨Ê±Æ÷
    //}
    
    
    void main()
    {
        TMOD = 0x01;
        TH0 = 0x0Dc;
        TL0 = 0x009;
    		EA=1; //¿ª×ÜÖжÏ
    		ET0=1;			 //¿ª¶¨Ê±Æ÷0ÖжÏ
    	
    	
    	while(1){
    //  按钮判断
    		if(!k1 && !db) {
    			db = 1;
    			TR0 = ~TR0;
    		}else if(k1) {
    			db = 0;
    		}
    		
    		if(TR0) {
    			P1 = 0xfe;
    		}else {
    			P1 = 0xff;
    		}
    /*	if(k1 == 0)
    		{
    			delay1(4);
    			if(k1 == 0) count_num++;
    			
    			if(count_num == 1) {
    				start_timer();
    				P1 = 0xf0;
    			}else if(count_num == 2) {
    				stop_timer();
    				P1 = 0x0f;
    			}else if(count_num == 3){
    				count_num = 1;
    				start_timer();
    				P1 = 0xf0;
    			}
    		} */
    		
    		
    		
    
    /*		if(k3 == 0){	
    //			TMOD = 0x10;
    			 TH1 = 0x3C;
    			 TL1 = 0x0B0;
    			 ET1 = 1;
    			 TR1 = 1;
    
    				if(k3 == 0 ) {
    						if(value >= 60) {
    							stop_timer();
    							P1 = 0x0f;
    							sf=0;
    							gf=1;
    							sm=5;
    							m=0;
    							count_num = 0;
    						}else {
    							ET1 = 0;
    							TR1 = 0;
    							value = 0;
    						}
    				}
    		}	*/
    		
    		
    		
    		if(k3 == 0){	
    			if(value >= 280){
    					if(k3 == 0) {
    							TR0 = 0;
    							gf=1;
    							sm=5;
    							m=0;
    							count_num = 0;
    							value = 0;
    						}else {
    							value = 0;
    						}
    				}
    		}	
    		
    		if(gf == 0 && sm == 0 && m == 0) {
    			P1 = 0xff;
    		}
    		//µ¹Êý¼Æʱ
    		if(value < 277) {
    			if(i == 1)
    		{
    			if(sh == 0)
    			{
    				if(bh == 0)
    				{
    					if(m == 0)
    					{
    						if(sm == 0)
    						{
    							if(gf == 0)
    							{
    								if(sf == 0) {
    									P1 = 0xff;
    								}else {
    									sf--;
    									gf = 10;
    								}				
    							}
    							else
    							{
    								gf--;
    								sm = 10;
    							}
    						}
    						else
    						{
    							sm--;
    							m = 10;
    						}
    					}
    					else
    					{
    						m--;
    						bh = 10;
    					}
    				}
    				else
    				{
    					bh--;
    					sh= 10;
    				}
    			}
    			else
    			
    				sh--;
    				i = 0;
    			
    		}
    		
    		}
    		display(sf,gf,sm,m);
    		
    	}
    
    }
    void Timer0Interrupt(void) interrupt 1
    {
        TH0 = 0x0Dc;
        TL0 = 0x009;
    	 i++;
    	if(k3 == 0) {
    		value++;
    	}
        //add your code here!
    }
    

    倒计时: 高配版 有闪

    倒计时到最后十秒进行闪烁

    #include <reg52.h>
    sbit led1 = P2^4;
    sbit led2 = P2^5;
    sbit led3 = P2^6;
    sbit led4 = P2^7;
    sbit k1 = P3^4;
    sbit k2 = P3^5;
    
    int  lhj = 0,value = 0,i = 0, value_number = 0, smg1_light = 5, smg2_light = 2, smg3_light = 0, smg4_light = 0,flag = 0;
    
    bit db; 
    unsigned char code light[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
    
    void delay(unsigned int x)
    {
    	unsigned int i,j;
    	for(i = x;i > 0;i--){
    		for(j = 112;j > 0;j--){};
    	}
    }
    void main()
    {
    	int value_fuzhi = 0;
    	 TMOD = 0x01;
    //    TH0 = 0x0Dc;
    //    TL0 = 0x009;
    	   TH0 = 0x3C;
          TL0 = 0x0B0;
    		EA=1; //¿ª×ÜÖжÏ
    		ET0=1; //¿ª¶¨Ê±Æ÷0ÖжÏ
    	
    		while(1){
    				if(!k1 && !db) {
    					db = 1;
    					TR0 = ~TR0;
    				}else if(k1) {
    					db = 0;
    				}
    				if(TR0) {
    					P1 = 0xfe;
    				}else {
    					P1 = 0xff;
    				}
    				
    				if(i == 20) {
    					i = 0;
    					smg1_light--;
    					
    				}
    				if(smg1_light < 0) {
    					smg2_light--;
    					smg1_light = 9;
    				}			
    				
    				if(smg1_light == 0 && smg2_light == 1) {
    					flag++;
    				}
    				
    //				¹Ø±ÕÏÔʾ 
    				if(smg1_light >= 0 && smg2_light == 1 || flag && value <= 4) {
    			
    					led4 = 0;
    					led3 = 0;
    					led2 = 0;
    					led1 = 0;
    					delay(1);
    					
    				}
    				// ¿ªÆôÏÔʾ
    				if(smg1_light >= 0 && smg2_light == 1 || smg2_light == 0 && value > 4 && value <= 10) {
    					P0 = light[smg1_light];
    					P2 = 0x88;
    					delay(1);
    					
    					P0 = light[smg2_light];
    					P2 = 0x48;
    					delay(1);
    					
    					P0 = light[smg3_light];
    					P2 = 0x28;
    					delay(1);
    					
    					P0 = light[smg4_light];
    					P2 = 0x18;
    					delay(1);
    				}		
    				
    				
    		if(lhj >= 20) {
    			
    			TR0 = 0;
    			smg1_light = 5, smg2_light = 2, smg3_light = 0, smg4_light = 0;
    
    			
    		}
    				if(smg1_light >= 0 && smg2_light > 1 || smg2_light == 0 && smg1_light < 0) {
    					P0 = light[smg1_light];
    					P2 = 0x88;
    					delay(1);
    					
    					P0 = light[smg2_light];
    					P2 = 0x48;
    					delay(1);
    					
    					P0 = light[smg3_light];
    					P2 = 0x28;
    					delay(1);
    					
    					P0 = light[smg4_light];
    					P2 = 0x18;
    					delay(1);
    				}	
    		}
    	
    }
    
    void Timer0Interrupt(void) interrupt 1
    {
    	  TH0 = 0x3C;
         TL0 = 0x0B0;
    	  i++;
    		if(flag) {
    			value++;
    		}
    		if(value > 10) {
    			value = 0;
    		}
    		
    		if(smg1_light == 0 && smg2_light == 0 && smg3_light == 0 && smg4_light == 0 ) {
    			lhj++;
    		}
    		if(lhj > 20) {
    			lhj = 0;
    		}
        //add your code here!
    }
    
    
    展开全文
  • 目标:定时器和计数器的理解(二) ...GATE是门控信号GATE=1时,T/C(定时/计数器)启动收到双重控制要求TR0/TR1和INT0/INT1同时为高,GATE=0时,T/C的启动仅收到TR0/TR1的控制,通常把GATE置0 ...
        

    目标:定时器和计数器的理解(二)


    3.定时器/计数器工作方式

    (1)方式0


    13367077-99a54554881ec24d.png
    0
    • TL0是5位的寄存器,计数满了就向TH0进位并清0
    • GATE是门控信号GATE=1时,T/C(定时/计数器)启动收到双重控制要求TR0/TR1和INT0/INT1同时为高,GATE=0时,T/C的启动仅收到TR0/TR1的控制,通常把GATE置0

    GATE置1,经过非门为0到或门,INT0必须为1和TR0必须为1,与门才是1,才能开始计数/定时
    GATE置0,经过非门为1到或门,或门只要有一个1就是1,所以GATE=0时,T/C的启动仅收到TR0/TR1的控制


    (2)方式1


    13367077-b72fea8ce61331fe.png
    1

    方式1的计数位数是16位,由TL0作为低8位,TH0作为高8位,组成了16位加1计数器。


    (3)方式2


    13367077-54676fd5f0617086.png
    2

    方式2为自动重装初值的8位计数方式


    (4)方式3


    13367077-d921f0a564ff96d6.png
    3

    方式3只适用于定时/计数器T0,工作方式3将T0分成为两个独立的8位计数器TL0和TH0。定时器T1处于方式3时相当于TR1=0,停止计数。


    4.定时器/计数器使用方法

    ①对TMOD赋值,以确定T0和T1的工作方式。
    ②计算初值,并将其写入TH0、TL0或TH1、TL1。
    ③中断方式时,打开定时器中断(ET0/ET1)及总中断EA。
    ④使TR0或TR1置位,启动定时/计数器定时或计数

    下一篇:初值的计算案例

    展开全文
  • 一.寄存器(只给出有用的位) ** 1.TCON定时器/计数器0/1控制寄存器 ** ...TR0 TF1:T1溢出中断标志位。产生溢出时,硬件置1,请求中断。进入中断后硬件清0; TR1:0—关闭T1,1—打开T1; TF0:T0溢出...
  • TR0=~TR0; } } } void main() { num=SBUF; init(); while(1) { if(flag==1) { flag=0; ES=0; RI=0; TI=1; SBUF=num; while(!TI); TI=0; ...
  • 单片机常用寄存器

    2020-11-17 15:32:04
    定时器方式控制寄存器TMOD D7 D6 D5 D4 D3 ...当GATE=0时,只利用控制位TR...当GATE=1时,定时器的启停由外部中断引脚控制位TR0TR1来共同控制。 M1、M0:工作模式控制位。 M1 M0 工作方式 功能简述 0 0 模
  • TR1=0; fm=1;//关蜂鸣器 } delay(temp%16); //取数的低4位 TR1=0; //唱完一个音停10MS fm=1; delay_ms(10); TR1=1; i++; keyboard(); if(number==6) { number=0; fm=1; EA=...
  • 51单片机的中断

    2020-12-24 22:42:39
    51单片机的中断 总序 51中断源分为两种类型,一类是外部中断源,其中包括INT0INT1;另一类是内部终端源,包括两个定时器/计数器(T0T1)的溢出中断(TF0TF1)...TR0和TR1用于定时器/计数器启动控制, ``IT0与I
  • 51单片机定时器

    2013-09-18 11:18:00
    TMOD:定时器/计数器模式控制寄存器 Ⅰ,GATE——门控制。 ●GATE=1时,“与门”的输出信号K由INTx输入电... 当INT0引脚为高电平时且TR0置位,TR0=1;启动定时器T0; 当INT1引脚为高电平时且TR1置位,TR1=1;启动定时...
  • TR0=1;后,拷到单片机里,手机APP连接WiFi建立链接后,几秒后断开链接,有时甚至无法建立链接。 是串口中断定时器中断冲突了吗? 请问问题出在哪里,怎么解决 原来正常的情况:单片机和APP连接后,...
  • TR0=1 ; //T0定时允许 while(1) { if(K3==0&&K1==1&&K2==1)//转向控制 { turn_around=!turn_around; } while(K3==0);//检测K3是否释放 do{ PWM++ ; if(PWM>0xfe)//...
  • 1.定时/计数器方式寄存器TMOD(段寻址) GATE1 C/T1 M1 M0 GATE0 C/T0 M1 M0 GATE:门控制位 ...C/T:定时器计数器的模式选择为 ... TR0 IE1 IT1 IE0 IT0 ...
  • 单片机实验五

    千次阅读 2017-07-09 13:49:42
    这次实验主要是为了让我们巩固定时器计数器的相关知识,比如TMOD,TH0,TL0,TH1,TL1,IE,TR0,TR1 定时/计数器有四种工作方式 1、方式0: TMOD中M1M0为00的时候即为方式0,方式0是13位定时/计数方式,...
  • 单片机定时器的使用可以说非常简单,只要掌握原理,有一点的C语言基础就行了。要点有以下几个: 1. 一定要知道英文缩写的原形,这样...GATE=0时,仅由TR0,TR1置位分别启动定时器T0、T1。 (2)C/T——功能选择位 C
  • #include unsigned char k; sbit Gate1=P1^0; sbit Gate2=P1^1; main() {  n=0;  TH1=0xff;  TL1=0x06; //定时器250us产生一次中断 ... TR1=1; //使能定时器  ET0=1; //开中断   EA=1;
  • 定时器在单片机应用中非常的重要,单片机可以对外部脉冲计数精确定时。51有两个定时器T0T1,有四种工作模式,它们分别使用TH0,TL0TH1,TL1作为特殊功能... TCONTF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0TF1TF0-溢
  • 一、定时器/计数器概述 1.相关寄存器 (1)TMOD——方式控制... GATE=1,定时器/计数器的运行由外部中断(I引脚P3.2/P3.3)内部TR0/TR1 置1共同选通;  C/T=1,外部脉冲计数(P3.4/P3.5),=0,定时器内部...
  • 那么TR0TR1又是什么呢?看上节课的图。 计数脉冲要进入计数器还真不不难,有层层关要通过,最起码,就是TR0(1)要为1,开关才能合上,脉冲才能过来。因此,TR0(1)称之为运行控制位,可用指令SETB来置位以...
  • sbit TR0 = 0x8C; sbit IE1 = 0x8B; sbit IT1 = 0x8A; sbit IE0 = 0x89; sbit IT0 = 0x88; /* IE */ sbit EA = 0xAF; sbit ES = 0xAC; sbit ET1 = 0xAB; sbit EX1 = 0xAA; sbit ET0 = 0xA9; sbit EX0 = 0xA8; /* IP ...
  • 定时器/计数器控制寄存器TCON 定时器/计数器控制寄存器TCON在特殊功能寄存器中,字节地址为88H,位地址(由低位...TF1、TR1、TF0、TR0位用于定时器/计数器,IE1、IT1、IE0、IT0用于外部中断。 TF1—定时器1溢出标志...
  • MCS-51单片机的中断响应延迟时间...程序中#LOW(-1000+7)#HIGH(-1000+7)是汇编符号,分别表示-1000+7=0FC1FH这个立即数的低位字节(1FH)高位字节(0FCH)。 CLR EA ;禁止所有中断 CLR TR1 ;停止定时器T1 MO
  • 蓝桥杯单片机CT107D 超声波测距 首先定义一下发送接收管脚 sbit Trig=P1^0; sbit Echo=P1^1; 然后 uint8 get_distance() { uint16 distance; Trig=1; //使发送端持续12us高电平 delay_us(12); Trig=0; ...
  • 6. 汇编源程序(查询法)SECOND EQU 30HTCOUNT EQU 31HORG 00HSTART: MOV SECOND,#00HMOV TCOUNT,#00HMOV TMOD,#01HMOV TH0,#(65536-50000) / 256MOV TL0,#(65536-50000) MOD 256SETB TR0DISP: MOV A,SECONDMOV B,#...
  • **数码管主要是利用视觉暂留的效果,通过快速循环点亮数 码管方式,将数据呈现出来数码管是 LED 的升级,每位数码管里面继承了 8 个 LED,点亮...高四位: TF1,TR1,TF0,TR0 TR0开关 其他的固定 TMOD=0x01; 将工作方式寄
  • 要启用一个定时器,先要开启定时器,然后产生中断 系统中断: 初始化程序应完成如下工作: 对TMOD赋值,以确定T0...使TR0TR1置位,启动定时/计数器定时或计数。 #include <reg52.h> /********...
  • 我用了串口通信(蓝牙模块) 定时器中断1,是不是这里定义时有什么问题? ``` SCON=0X50; //设置为工作方式1 TMOD=0X21; //设置计数器工作方式2 TH1=0XFD; //计数器初始值设置,注意波特率是4800的 TL1...

空空如也

空空如也

1 2 3 4
收藏数 67
精华内容 26
关键字:

单片机tr1和tr0