|
51單片機(jī)中斷中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;
- }
復(fù)制代碼
|
|