📄 mzmfr.c
字号:
#include<reg51.h>#define uint unsigned int#define uchar unsigned char uchar bdata FLAG;sbit FLAG1=FLAG^1;sbit FLAG2=FLAG^2;sbit P1_1=P1^1;uchar data time,Dtime,Btime;uint fetch_rate(void);main(){ char bdata JFLAG; char data state,Astate,Bstate,rate; do{ P1=0XFF; FLAG=P1; TXD=0; JFLAG=FLAG>>6; JFLAG=FLAG&0X03; switch(JFLAG) { case 0: time=2;Dtime=20;break; case 1: time=4;Dtime=40;break; case 2: time=6;Dtime=60;break; case 3: time=8;Dtime=80;break; } Btime=Dtime; JFLAG=FLAG>>3;JFLAG=JFLAG&0X07; switch(JFLAG) { case 0: state=50;break; case 1: state=100;break; case 2: state=150;break; case 3: state=200;break; case 4: state=250;break; case 5: state=300;break; case 6: state=350;break; case 7: state=400;break; } FLAG1=0; TMOD=0x51; TH1=0; TL1=0; TH0=0x3C; TL0=0XB0; TR0=1; TR1=1; ET0=1; EA=1; rate=fetch_rate(); if(!FLAG2) { Astate=state+2*state/10; if(rate<=state) { TXD=1; do { rate=fetch_rate(); }while(rate<=Astate); TXD=0; } } else { Bstate=state-2*state/10; if(rate>=state) { TXD=1; do { rate=fetch_rate(); }while(rate>=Astate); TXD=0; } } }while(1);}unsigned int fetch_rate(){ uint count; do{}while(!FLAG1); FLAG1=0; count=TH1*256+TL1; TH1=0; TL1=0; Dtime=Btime; return(count/time); } timer0() interrupt 1 using 1 { TH0=0x3c; TL0=0XB0; Dtime=Dtime-1; if(Dtime==0){FLAG=1;} }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -