捕獲.PNG (97.61 KB, 下載次數: 54)
下載附件
2017-2-28 16:36 上傳
DO口到D7口好像不工作
下面是代碼:
- #include <reg52.h>
- #include <intrins.h>
- #include <stdio.h>
- #include <absacc.h>
- #define uchar unsigned char
- #define uint unsigned int
- #define CON XBYTE[0xfb00]
- #define PA XBYTE[0xf800]
- #define PB XBYTE[0xf900]
- #define PC XBYTE[0xfa00]
- uchar code SMG_CODE[] = {/*0,1,2,3,4,5,6,7,8,9,空,*/
- 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xFF,0xbf};
- uchar array[8] = {10,10,10,10,10,10,10,0};
- sbit SB1 = P1^0;
- sbit BUZ = P1^1;
- uchar a = 0;
- uint H_Time,L_Time;
- unsigned long PL;
- unsigned long ZQ;
- void delayms(uint x)
- {
- uchar i;
- while(x--)for(i = 0;i < 120; i++);
- }
- extern void Init_1602(void);
- extern void Xian_String(uchar x,uchar y,uchar *p);
- //主函數
- void main(void)
- {
- uchar Buffer[20];
- CON = 0x03;
- //初始化
- TMOD = 0x11;
- TH0 = (65536 - 4000)>>8;
- TL0 = (65536 - 4000)&0xff;
- ET0 = 1;
- EA = 1;
- TR0 = 1;
- TH1 = TL1 = 0;
- TR1 = 0;
- EX0 = 1;
- IT0 = 1;
- EX1 = 1;
- IT1 = 1;
- TR1 = 1;
- Init_1602();
- delayms(100);
- while(1)
- {
- PL = 1000000/ZQ;
- sprintf(Buffer,"%ldHZ ZQ:%ld",PL,ZQ);
- Xian_String(0,0,Buffer);
- sprintf(Buffer,"MaiKuan:%d",H_Time);
- Xian_String(1,0,Buffer);
- while(SB1 == 0)BUZ = 0;
- delayms(1000);
- BUZ = 1;
- }
- }
- void EX0_IT0(void) interrupt 0
- {
- H_Time = TH1<<8|TL1;
- TH1 = TL1 = 0;
- ZQ = H_Time+L_Time;
- }
- void EX1_IT1(void) interrupt 2
- {
- L_Time = TH1<<8|TL1;
- TH1 = TL1 = 0;
- }
- void ET0_T0(void) interrupt 1
- {
- static uchar i = 0,Wei = 0x01;
- TH0 = (65536 - 4000)>>8;
- TL0 = (65536 - 4000)&0xff;
- PB = 0x00;
- PA = SMG_CODE[array[i]];
- PB = Wei;
- Wei<<=1;
- if(++i == 8){i = 0; Wei = 0x01;}
- }
- #include <reg52.h>
- #include <intrins.h>
- #include <absacc.h>
- #define uchar unsigned char
- #define uint unsigned int
- #define PA XBYTE[0x0001]
- sbit RS = P1^2;
- sbit RW = P1^3;
- sbit E = P1^4;
- void delayXms(uint x)
- {
- uchar i;
- while(x--)for(i = 0; i < 120; i++);
- }
- void Write_Data(uchar x)
- {
- delayXms(1);
- RS = 0;
- RW = 0;
- PA = x;
- E = 1;
- _nop_();
- E = 0;
- RW = 1;
- }
- void Write_Order(uchar x)
- {
- delayXms(1);
- RS = 1;
- RW = 0;
- PA = x;
- E = 1;
- _nop_();
- E = 0;
- RW = 1;
- }
- void Init_1602(void)
- {
- Write_Order(0x38);
- Write_Order(0x38);
- Write_Order(0x08);
- Write_Order(0x01);
- Write_Order(0x06);
- Write_Order(0x0c);
- }
- void Xian_String(uchar x,uchar y,uchar *p)
- {
- uchar i = 0;
- y |= 0x80;
- if(x == 1)y |= 0x40;
- Write_Order(y);
- while(p[i] != 0)
- {
- Write_Data(p[i++]);
- }
- }
復制代碼 |