欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
單片機程序中pwm信號讀取不出來,求解救!
[打印本頁]
作者:
石頭兒
時間:
2017-11-19 00:05
標題:
單片機程序中pwm信號讀取不出來,求解救!
51單片機中斷中pwm的信號讀取不出來,無法和count比較
#include<reg52.h>
#include "control.h"
#include "12864.h"
#define uchar unsigned char
#define uint unsigned int
#define keydata P1
sbit A1=P2^2;
sbit A2=P2^3;
sbit ENA=P2^4;
signed int count=0;
signed char pwm=0;
signed char anjian=0;
uchar numshi=0;
uchar numge=0;
void delayms(unsigned int xms)
{
unsigned int i,j;
for(i=0;i<xms;i++)
for(j=0;j<110;j++);
}
void pwm_dis()
{
numshi=pwm/10;
numge=pwm%10;
write_12864_data(0x30+numshi);
write_12864_data(0x30+numge);
}
void anjian_dis()
{
numshi=anjian/10;
numge=anjian%10;
write_12864_data(0x30+numshi);
write_12864_data(0x30+numge);
}
void keyscan()
{
unsigned char dat=0;
unsigned char num=0;
keydata=0xfe;
dat=keydata;
dat=dat&0xf0;
while(dat!=0xf0)
{
delayms(5);
dat=keydata;
dat=dat&0xf0;
while(dat!=0xf0)
{
dat=keydata;
switch(dat)
{
case 0xee:num=1;
break;
case 0xde:num=2;
break;
case 0xbe:num=3;
break;
case 0x7e:num=4;
break;
}
while(dat!=0xf0)
{
dat=keydata;
dat=dat&0xf0;
}
}
}
keydata=0xfd;
dat=keydata;
dat=dat&0xf0;
while(dat!=0xf0)
{
delayms(5);
dat=keydata;
dat=dat&0xf0;
while(dat!=0xf0)
{
dat=keydata;
switch(dat)
{
case 0xed:num=5;
break;
case 0xdd:num=6;
break;
case 0xbd:num=7;
break;
case 0x7d:num=8;
break;
}
while(dat!=0xf0)
{
dat=keydata;
dat=dat&0xf0;
}
}
}
keydata=0xfb;
dat=keydata;
dat=dat&0xf0;
while(dat!=0xf0)
{
delayms(5);
dat=keydata;
dat=dat&0xf0;
while(dat!=0xf0)
{
dat=keydata;
switch(dat)
{
case 0xeb:num=9;
break;
case 0xdb:num=10;
break;
case 0xbb:num=11;
break;
case 0x7b:num=12;
break;
}
while(dat!=0xf0)
{
dat=keydata;
dat=dat&0xf0;
}
}
}
keydata=0xf7;
dat=keydata;
dat=dat&0xf0;
while(dat!=0xf0)
{
delayms(5);
dat=keydata;
dat=dat&0xf0;
while(dat!=0xf0)
{
dat=keydata;
switch(dat)
{
case 0xe7:num=13;
break;
case 0xd7:num=14;
break;
case 0xb7:num=15;
break;
case 0x77:num=16;
break;
}
while(dat!=0xf0)
{
dat=keydata;
dat=dat&0xf0;
}
}
}
switch(num)
{
case 1: write_12864_addr(1,3);
pwm=0;
pwm_dis();
break;
case 2: write_12864_addr(1,3);
pwm=10;
pwm_dis();
break;
case 3:write_12864_addr(1,3);
pwm=20;
pwm_dis();
break;
case 4:write_12864_addr(1,3);
pwm=30;
pwm_dis();
break;
case 5:write_12864_addr(1,3);
pwm=40;
pwm_dis();
break;
case 6:write_12864_addr(1,3);
pwm=50;
pwm_dis();
break;
case 7:write_12864_addr(1,3);
pwm=60;
pwm_dis();
break;
case 8:write_12864_addr(1,3);
pwm=70;
pwm_dis();
break;
case 9: write_12864_addr(1,3);
pwm=80;
pwm_dis();
break;
case 10: write_12864_addr(1,3);
pwm=90;
pwm_dis();
break;
case 11:write_12864_addr(1,3);
pwm=99;
pwm_dis();
break;
case 12:write_12864_addr(1,3);
pwm=35;
pwm_dis();
break;
case 13:write_12864_addr(1,3);
pwm=pwm+5;
pwm_dis();
break;
case 14:write_12864_addr(1,3);
pwm=pwm-5;
pwm_dis();
break;
case 15:write_12864_addr(1,3);
pwm=pwm+1;
pwm_dis();
break;
case 16:write_12864_addr(1,3);
pwm=pwm-1;
pwm_dis();
break;
}
}
void keyscan_1()
{
unsigned char dat=0;
unsigned char num=0;
keydata=0xfe;
dat=keydata;
dat=dat&0xf0;
while(dat!=0xf0)
{
delayms(5);
dat=keydata;
dat=dat&0xf0;
while(dat!=0xf0)
{
dat=keydata;
switch(dat)
{
case 0xee:num=1;
break;
case 0xde:num=2;
break;
case 0xbe:num=3;
break;
case 0x7e:num=4;
break;
}
while(dat!=0xf0)
{
dat=keydata;
dat=dat&0xf0;
}
}
}
keydata=0xfd;
dat=keydata;
dat=dat&0xf0;
while(dat!=0xf0)
{
delayms(5);
dat=keydata;
dat=dat&0xf0;
while(dat!=0xf0)
{
dat=keydata;
switch(dat)
{
case 0xed:num=5;
break;
case 0xdd:num=6;
break;
case 0xbd:num=7;
break;
case 0x7d:num=8;
break;
}
while(dat!=0xf0)
{
dat=keydata;
dat=dat&0xf0;
}
}
}
keydata=0xfb;
dat=keydata;
dat=dat&0xf0;
while(dat!=0xf0)
{
delayms(5);
dat=keydata;
dat=dat&0xf0;
while(dat!=0xf0)
{
dat=keydata;
switch(dat)
{
case 0xeb:num=9;
break;
case 0xdb:num=10;
break;
case 0xbb:num=11;
break;
case 0x7b:num=12;
break;
}
while(dat!=0xf0)
{
dat=keydata;
dat=dat&0xf0;
}
}
}
keydata=0xf7;
dat=keydata;
dat=dat&0xf0;
while(dat!=0xf0)
{
delayms(5);
dat=keydata;
dat=dat&0xf0;
while(dat!=0xf0)
{
dat=keydata;
switch(dat)
{
case 0xe7:num=13;
break;
case 0xd7:num=14;
break;
case 0xb7:num=15;
break;
case 0x77:num=16;
break;
}
while(dat!=0xf0)
{
dat=keydata;
dat=dat&0xf0;
}
}
}
switch(num)
{
case 1: write_12864_addr(3,7);
anjian=0;
anjian_dis();
break;
case 2: write_12864_addr(3,7);
anjian=10;
anjian_dis();
break;
case 3:write_12864_addr(3,7);
anjian=20;
anjian_dis();
break;
case 4:write_12864_addr(3,7);
anjian=30;
anjian_dis();
break;
case 5:write_12864_addr(3,7);
anjian=40;
anjian_dis();
break;
case 6:write_12864_addr(3,7);
anjian=50;
anjian_dis();
break;
case 7:write_12864_addr(3,7);
anjian=60;
anjian_dis();
break;
case 8:write_12864_addr(3,7);
anjian=anjian+1;
anjian_dis();
break;
case 9: write_12864_addr(3,7);
anjian=anjian+2;
anjian_dis();
break;
case 10: write_12864_addr(3,7);
anjian=anjian+3;
anjian_dis();
break;
case 11:write_12864_addr(3,7);
anjian=anjian+4;
anjian_dis();
break;
case 12:write_12864_addr(3,7);
anjian=anjian+5;
anjian_dis();
break;
case 13:write_12864_addr(3,7);
anjian=anjian+6;
anjian_dis();
break;
case 14:write_12864_addr(3,7);
anjian=anjian+7;
anjian_dis();
break;
case 15:write_12864_addr(3,7);
anjian=anjian+8;
anjian_dis();
break;
case 16:write_12864_addr(3,7);
anjian=anjian+9;
anjian_dis();
break;
}
}
void timer1() interrupt 3
{
TH1=(65535-1000)/256;
TL1=(65535-1000)%256;
count++;
if(count=100)
{
count=0;
}
if(count<=pwm)
{
ENA=1;
A1=0;
A2=1;
}
else
{
ENA=0;
A1=0;
A2=1;
}
TR1=1;
}
復制代碼
作者:
石頭兒
時間:
2017-11-19 00:19
頂 求解救
作者:
wulin
時間:
2017-11-19 06:44
你寫的這程序中既沒有主程序main(),也沒有初始化定時器,怎么能夠跑得起來?
作者:
石頭兒
時間:
2017-11-19 10:35
wulin 發表于 2017-11-19 06:44
你寫的這程序中既沒有主程序main(),也沒有初始化定時器,怎么能夠跑得起來?
這是子程序之一,這個子程序的pwm信號讀不出來,你幫我看看,是不是switc好 case 函數有問題 謝謝啦
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1