Last active
May 19, 2024 11:09
-
-
Save adminy/fbced8604db9d93224e106d8d0b73c8a to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/*-------------------------------------------------------------------------- | |
INTRINS.H | |
Intrinsic functions for C51. | |
Copyright (c) 1988-2004 Keil Elektronik GmbH and Keil Software, Inc. | |
All rights reserved. | |
--------------------------------------------------------------------------*/ | |
#ifndef __INTRINS_H__ | |
#define __INTRINS_H__ | |
extern void _nop_ (void); | |
extern bit _testbit_ (bit); | |
extern unsigned char _cror_ (unsigned char, unsigned char); | |
extern unsigned int _iror_ (unsigned int, unsigned char); | |
extern unsigned long _lror_ (unsigned long, unsigned char); | |
extern unsigned char _crol_ (unsigned char, unsigned char); | |
extern unsigned int _irol_ (unsigned int, unsigned char); | |
extern unsigned long _lrol_ (unsigned long, unsigned char); | |
extern unsigned char _chkfloat_(float); | |
extern void _push_ (unsigned char _sfr); | |
extern void _pop_ (unsigned char _sfr); | |
#endif |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/*-------------------------------------------------------------------------- | |
REG52.H | |
Header file for generic 80C52 and 80C32 microcontroller. | |
Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc. | |
All rights reserved. | |
--------------------------------------------------------------------------*/ | |
#ifndef __REG52_H__ | |
#define __REG52_H__ | |
/* BYTE Registers */ | |
sfr P0 = 0x80; | |
sfr P1 = 0x90; | |
sfr P2 = 0xA0; | |
sfr P3 = 0xB0; | |
sfr PSW = 0xD0; | |
sfr ACC = 0xE0; | |
sfr B = 0xF0; | |
sfr SP = 0x81; | |
sfr DPL = 0x82; | |
sfr DPH = 0x83; | |
sfr PCON = 0x87; | |
sfr TCON = 0x88; | |
sfr TMOD = 0x89; | |
sfr TL0 = 0x8A; | |
sfr TL1 = 0x8B; | |
sfr TH0 = 0x8C; | |
sfr TH1 = 0x8D; | |
sfr IE = 0xA8; | |
sfr IP = 0xB8; | |
sfr SCON = 0x98; | |
sfr SBUF = 0x99; | |
/* 8052 Extensions */ | |
sfr T2CON = 0xC8; | |
sfr RCAP2L = 0xCA; | |
sfr RCAP2H = 0xCB; | |
sfr TL2 = 0xCC; | |
sfr TH2 = 0xCD; | |
/* BIT Registers */ | |
/* PSW */ | |
sbit CY = PSW^7; | |
sbit AC = PSW^6; | |
sbit F0 = PSW^5; | |
sbit RS1 = PSW^4; | |
sbit RS0 = PSW^3; | |
sbit OV = PSW^2; | |
sbit P = PSW^0; //8052 only | |
/* TCON */ | |
sbit TF1 = TCON^7; | |
sbit TR1 = TCON^6; | |
sbit TF0 = TCON^5; | |
sbit TR0 = TCON^4; | |
sbit IE1 = TCON^3; | |
sbit IT1 = TCON^2; | |
sbit IE0 = TCON^1; | |
sbit IT0 = TCON^0; | |
/* IE */ | |
sbit EA = IE^7; | |
sbit ET2 = IE^5; //8052 only | |
sbit ES = IE^4; | |
sbit ET1 = IE^3; | |
sbit EX1 = IE^2; | |
sbit ET0 = IE^1; | |
sbit EX0 = IE^0; | |
/* IP */ | |
sbit PT2 = IP^5; | |
sbit PS = IP^4; | |
sbit PT1 = IP^3; | |
sbit PX1 = IP^2; | |
sbit PT0 = IP^1; | |
sbit PX0 = IP^0; | |
/* P3 */ | |
sbit RD = P3^7; | |
sbit WR = P3^6; | |
sbit T1 = P3^5; | |
sbit T0 = P3^4; | |
sbit INT1 = P3^3; | |
sbit INT0 = P3^2; | |
sbit TXD = P3^1; | |
sbit RXD = P3^0; | |
/* SCON */ | |
sbit SM0 = SCON^7; | |
sbit SM1 = SCON^6; | |
sbit SM2 = SCON^5; | |
sbit REN = SCON^4; | |
sbit TB8 = SCON^3; | |
sbit RB8 = SCON^2; | |
sbit TI = SCON^1; | |
sbit RI = SCON^0; | |
/* P1 */ | |
sbit T2EX = P1^1; // 8052 only | |
sbit T2 = P1^0; // 8052 only | |
/* T2CON */ | |
sbit TF2 = T2CON^7; | |
sbit EXF2 = T2CON^6; | |
sbit RCLK = T2CON^5; | |
sbit TCLK = T2CON^4; | |
sbit EXEN2 = T2CON^3; | |
sbit TR2 = T2CON^2; | |
sbit C_T2 = T2CON^1; | |
sbit CP_RL2 = T2CON^0; | |
#endif |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <reg52.h> | |
#include <intrins.h> | |
#define INT8U unsigned char | |
#define INT16U unsigned int | |
sfr WDT_CONTR = 0Xe1; | |
// buttons | |
sbit KEY1 = P3^6; | |
sbit KEY2 = P3^7; | |
// pins | |
sbit led = P2^5; | |
sbit led3 = P2^0; | |
sbit led2 = P2^1; | |
sbit led1 = P2^2; | |
sbit led0 = P2^3; | |
INT8U TxBuf[4]; | |
INT8U send_f; | |
//when i = 100. delay ~ 1.5ms | |
static void delay(unsigned int s) { | |
unsigned int i; | |
for(i = 0; i < s; i++); | |
} | |
void UART_init() { | |
SCON = 0x50; // uart in mode 1 (8 bit), REN = 1 | |
TMOD = TMOD | 0x20 ; // Timer 1 in mode 2 | |
TH1 = 0xFD; // 9600 Bds at 11.059MHz | |
TL1 = 0xFD; // 9600 Bds at 11.059MHz | |
//IE = 0x90; | |
TR1 = 1; // Timer 1 run | |
ET1 = 0; | |
ES = 1; //allow serial port interrupt | |
PS = 1; // Serial port interrupt priority | |
EA = 1; // MCU Interrupt enable | |
} | |
void Sendchar(unsigned char c) { | |
SBUF = c; | |
while(TI == 0); | |
TI = 0; | |
} | |
void print_string(unsigned char* p) { // send string | |
while(*p != '\0') Sendchar(*p++); | |
} | |
// return a 10 digit data including a start bit 'S' | |
com_interrupt(void) interrupt 4 using 3 { | |
if (RI) { //handle receive interrupt | |
RI = 0; //clear the interrupt flag bit | |
TxBuf[2] = SBUF; | |
send_f = 1; //set data sending flag | |
led = 1; | |
} | |
} | |
void main(void) { | |
INT8U leng = 0; | |
INT8U i,k = 0; | |
INT8U RxBuf[4] = {0}; | |
INT8U rxcount = 0xff; | |
INT8U TxBuf[30]; | |
led = 1; | |
TxBuf[2] = 2; | |
TxBuf[3] = 0; | |
UART_init(); | |
P0 = 0x00; | |
led1 = 0; | |
for(i = 0; i < 30; i++) { | |
TxBuf[i] = i; | |
} | |
Sendchar(0xA3); // set baud rate command | |
Sendchar(0x3A); | |
Sendchar(0x02); // set baud rate to: 9600 | |
delay(6000); | |
Sendchar(0xA7); // set channel command | |
Sendchar(0x7A); | |
Sendchar(0x00); // set channel to: 06 | |
delay(6000); | |
Sendchar(0xAB); // Set power command | |
Sendchar(0xBA); | |
Sendchar(0x0A); // Set power to: 10DBM | |
delay(6000); | |
Sendchar(0xA9); //Set Module ID Number | |
Sendchar(0x9A); | |
Sendchar(0x00); //Set Module ID number | |
Sendchar(0x01); //Set ID number | |
delay(6000); | |
delay(6000); | |
while(1) { | |
WDT_CONTR = 0x3c; | |
if(KEY1 == 0) { | |
delay(10); | |
while(!KEY1) delay(10); //send test data when a key is detected | |
led1 = 0; | |
// the first frame test data string or data length should not exceed 30 bytes | |
print_string("abcdefghijklmnopqrstuvwxyzABCD"); | |
led1 = 1; | |
delay(750); // delay about 6 ms before sending the next frame of data | |
for(i = 0; i < 23; i++) Sendchar(TxBuf[i]); // send a 23 byte data packet | |
delay(750); //delay for about 6 ms before sending the next frame of data | |
Sendchar(0x66); //send single byte | |
} | |
delay(450); | |
led1 = 1; | |
delay(100); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment