使用STC89C51单片机,12MHZ晶振,
#include \ 遥控输入
sbit sin=P3^0; 基准正弦波相位输入 sbit AA=P0^0; sbit BB=P0^1; uint i,j,m,n,k,s=1;
uint keyvol; ************外中断遥控接收函数************** 外中断0
void intt0(void) interrupt 0 {
ET1=0;TR1=0;EX0=0;EA=0; ==1); ==0) {
_nop_();_nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_();_nop_(); =0;remdata=0x0000;
while(1) {
while(remotein==1) {
_nop_();_nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_();_nop_(); remdata++; }
if(remdata>m) 高电平>2毫秒退出 {remotedata[n]=0x00;EX0=1;EA=1;goto end;} remotedata[n]=remdata;n++; remdata=0x0000; while(remotein==0) {
_nop_();_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_();_nop_(); remdata++; }
remotedata[n]=remdata; n++;
remdata=0x00; }
end: lamp=0;studylamp=0; }
*********1毫秒延时程序********** delay1ms(uint t) {
for(i=0;i 附录3 PWM信号(产生移位脉冲) K1 BIT P0.1 ;K1控制高脉宽的增加 K2 BIT P0.2 ;K2控制高脉冲复位 K3 BIT P0.3;K3控制高脉宽的减小 OUT BIT P0.4 ;OUT输出PWM信号 KEY EQU 30H ;高脉冲指针,指示高脉冲的个数 DJH EQU 31H ;高脉冲个数上限 DJL EQU 32H ;高脉冲个数下限 DJBZ EQU 33H ;高脉冲标准个数 COUNTER EQU 34H ;计数指针:指示1个周期内,对高脉冲计数 ZQH EQU 35H ;一个周期的脉冲数高位 ;============================================================ ORG 0000H LJMP MAIN ORG 001BH ;用到,定时器T1 LJMP DJT1 ORG 0030H ;主程开始 ;初始化设置: MAIN: MOV TMOD,#21H ;定时设置,定时器T1工作于方式2 MOV TH1,#156 ;定时器T1,定时设置: MOV TL1,#156 SETB TR1 ;开启:T1计数