当前位置:首页 > 基于单片机的遥控直升飞机系统设计(论文) - 图文
东北石油大学本科生毕业设计(论文)
附录2 接收程序
/***********主程序函数***************/ main() {
clearmen(); incept.c; while(1) {
interrupt0 } }
/*****************结束*******************/
/***********初始化函数**********/ clearmen() {
studylamp=1; lamp=1; remoteout=0; remotein=1;
for(i=0;i<206;i++) {
remotedata[i]=0x00; } IE=0x00; IP=0x01; TMOD=0x22; PCON=0X00; TH1=0xf3; TL1=0xf3; IT0=1; EX0=1;
37
//初始化 //遥控接收处理器 //中断接收函数
东北石油大学本科生毕业设计(论文)
EA=1; }
/******************************************************************/
incept.c遥控接收处理器 /******************************************************************/ //使用STC89C51单片机,12MHZ晶振, #include \#include \ #define uchar unsigned char #define uint unsigned int
sbit remotein=P3.2; // 遥控输入
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; head=0;
while(studykey==0); studylamp=0;lamp=1;
while(remotein==1); head=0; while(remotein==0) {
_nop_();_nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_();_nop_(); head++; }
38
东北石油大学本科生毕业设计(论文)
n=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 39 东北石油大学本科生毕业设计(论文) 附录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计数 SETB ET1 ;允许:定时器T1中断 SETB EA ;允许:中断允许总控位 LCALL QNC ;清内存 ;寄存器初值设置: MOV ZQH,#200 ;周期脉冲数:200,即周期:20ms MOV DJBZ,#15 ;标准高脉冲:1.5MS MOV DJL,#9 ;最小高脉冲:0.9MS MOV DJH,#21 ;最大高脉冲:2.1MS MOV COUNTER,#00H;高脉冲计数指针:清零 40
共分享92篇相关文档