📄 datest.c
字号:
#include <c8051f340.h> // SFR declarations
//-----------------------------------------------------------------------------
// 16-bit SFR Definitions for 'F34x
//-----------------------------------------------------------------------------
//sfr16 TMR2RL = 0xca; // Timer2 reload value
//sfr16 TMR2 = 0xcc; // Timer2 counter
//-----------------------------------------------------------------------------
// Global Constants
//-----------------------------------------------------------------------------
//#define SYSCLK 12000000 / 8 // SYSCLK frequency in Hz
//#define BLINK_RATE 10 // Timer2 Interrupts per second
sbit P1_0 = P0^0;//cs
sbit P1_1 = P0^1;// // LED='1' means ON
sbit P1_2 = P0^2;//data
//-----------------------------------------------------------------------------
// Function Prototypes
//-----------------------------------------------------------------------------
void OSCILLATOR_Init (void);
void PORT_Init (void);
void Delay (int);
void init_da (void);
void da_conv();
//void Timer2_Init (int counts);
//void Timer2_ISR (void);
//-----------------------------------------------------------------------------
// main() Routine
//-----------------------------------------------------------------------------
void main (void)
{ unsigned int mm;
long int m,n,temp=0;
PCA0MD &= ~0x40; // WDTE = 0 (clear watchdog timer
// enable)
mm=24;
n=0x00001111;
m=n;
OSCILLATOR_Init (); // Initialize system clock
PORT_Init ();
init_da (); // Initialize crossbar and GPIO
//Timer2_Init (SYSCLK / 12 / BLINK_RATE); // Init Timer2 to generate
// interrupts at a 10Hz rate.
//EA = 1; // Enable global interrupts
while (1)
{
if(mm!=0)
{
P1_0=0;
P1_1=1;
temp=m>>(mm-1);
temp=temp&0x00000001;
if(temp==0)P1_2=0;
else P1_2=1;
Delay(1);
P1_1=0;
Delay(1);
mm--;
m=n;
}
else
{
init_da();
Delay(5);
mm=24;
} // Spin forever
}
}
//-----------------------------------------------------------------------------
// Initialization Subroutines
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
// OSCILLATOR_Init
//-----------------------------------------------------------------------------
//
// Return Value : None
// Parameters : None
//
// This function initializes the system clock to (12 Mhz / 8)
//
//-----------------------------------------------------------------------------
void OSCILLATOR_Init (void)
{
OSCICN = 0x83; // Configure internal oscillator for
// its lowest frequency
}
//-----------------------------------------------------------------------------
// PORT_Init
//-----------------------------------------------------------------------------
//
// Return Value : None
// Parameters : None
//
// This function configures the crossbar and GPIO ports.
//
// P2.2 digital push-pull LED1
//-----------------------------------------------------------------------------
void PORT_Init (void)
{
XBR0 = 0x00; // No digital peripherals selected
XBR1 = 0x40; // Enable crossbar and weak pull-ups
P2MDOUT |= 0x04; // Enable LED as a push-pull output
}
void Delay(int count)
{
int i,j;
for (i=0;i<count;i++)
for(j=0;j<120;j++)
;
}
void init_da(void)
{
P1_0=1;
P1_1=0;
P1_2=0;
}
//-----------------------------------------------------------------------------
// Timer2_Init
//-----------------------------------------------------------------------------
//
// Return Value : None
// Parameters :
// 1) int counts - calculated Timer overflow rate
// range is postive range of integer: 0 to 32767
//
// Configure Timer2 to 16-bit auto-reload and generate an interrupt at
// interval specified by <counts> using SYSCLK/48 as its time base.
//
//-----------------------------------------------------------------------------
//void Timer2_Init (int counts)
//{
// TMR2CN = 0x00; // Stop Timer2; Clear TF2;
// Use SYSCLK/12 as timebase
// CKCON &= ~0x60; // Timer2 clocked based on T2XCLK;
// TMR2RL = -counts; // Init reload values
// TMR2 = 0xffff; // Set to reload immediately
// ET2 = 1; // Enable Timer2 interrupts
// TR2 = 1; // Start Timer2
//}
//-----------------------------------------------------------------------------
// Interrupt Service Routines
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
// Timer2_ISR
//-----------------------------------------------------------------------------
//
// This routine changes the state of the LED whenever Timer2 overflows.
//
//-----------------------------------------------------------------------------
//void Timer2_ISR (void) interrupt 5
//{
// TF2H = 0; // Clear Timer2 interrupt flag
// LED1 = ~LED1; // Change state of LED
//}
//-----------------------------------------------------------------------------
// End Of File
//--------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -