2019年5月15日 星期三

四位元七段顯示器 & 三用電表量法


1.A1015S屬於 PNP


2.c9012屬於 PNP









#include "at89x52.h"
char P3table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
int counter=0;
int j=0;
int time=20;
char bcd[]={0,0};
char P2table[]={1,2};
void delay(int cnt)
{
int i,j;
for(i=0;i<cnt;i++)
for(j=0;j<114;j++);
}
void blink()
{
int i,j;
for(i=0;i<3;i++)
{
P1=0xfe;delay(1000);
P1=0xff;delay(1000);
}
}

main()
{
IE=0X8a;
TMOD=0x10;
TH0=(8192-5000)/32;
TL0=(8192-5000)%32;
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
TR0=1;
TR1=1;
while(1);
}
void int_T0(void) interrupt 1
{
TH0=(8192-5000)/32;
TL0=(8192-5000)%32;
P3=P3table[bcd[j]];
P2=~P2table[j];
j++;
if(j==2)
j=0;
}
void int_T1(void) interrupt 3
{
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
time--;
if(time==0)
{
time=20;
counter++;
if(counter==10)
P3=0xFF;//關閉閃爍三次
TR0=0;
    TR1=0;
blink();
}
bcd[0]=counter/10;
bcd[1]=counter % 10;
}
}
例:控制第二腳亮滅






































一、sbit定義特殊功能寄存器的位元變數
 bitsbit都是C51擴展的變數類型。
典型應用是:sbit P0_0=P0^0;//即定義P0_0P0口的第1位,以便進行位操作
bitint char之類的差不多,只不過char=8, bit=1位而已。都是變數,編譯器在編譯過程    
 中分配位址。


二、BDATA  D:20H~2FH  片內RAM位尋址區
bdata如何使用它呢?
若程序需要8個或者更多的bit變量,如果你想一次性給8個變量賦值的話就不方便了,(舉個例子說說它的方便之處,想更深入的了解請在應用中自己琢磨)又不可以定義bit數組,只有一個方法
char bdata MODE;
sbit MODE_7 = MODE^7;
sbit MODE_6 = MODE^6;
sbit MODE_5 = MODE^5;
sbit MODE_4 = MODE^4;
sbit MODE_3 = MODE^3;
sbit MODE_2 = MODE^2;
sbit MODE_1 = MODE^1;
sbit MODE_0 = MODE^0;
8bit變量MODE_n 就定義好了這是定義語句,Keilc 的特殊數據類型。記住一定要是sbit不能bit MODE_0 = MODE^0;





















































































































































































沒有留言:

張貼留言

algorithm

 #include <iostream> #include <string.h> using namespace std; int main(int argc, char** argv)  { for(int j=2;j<=100;j++)//j...