历史上的今天
今天是:2025年01月12日(星期日)
2018年01月12日 | 读内部R/C时钟及ID号C语言参考程序
2018-01-12 来源:eefocus
#include
#include
sfr IAP_CONTR = 0xC7;
sbit MCU_Start_LED = P1^7;
//unsigned char self_command_array[4] = {0x22,0x33,0x44,0x55};
#define Self_Define_ISP_Download_Command 0x22
#define RELOAD_COUNT 0xfb //18.432MHz,12T,SMOD=0,9600bps
void serial_port_initial();
void send_UART(unsigned char);
void UART_Interrupt_Receive(void);
void SOFt_reset_to_ISP_Monitor(void);
void delay(void);
void display_MCU_Start_Led(void);
void main(void)
{
unsigned char i = 0;
unsigned char j = 0;
unsigned char idata *idata_point;
serial_port_initial(); //串口初始化
// display_MCU_Start_Led(); //点亮发光二极管表示 单片机 开始工作
// send_UART(0x34); //串口发送数据表示 单片机 串口正常工作
// send_UART(0xa7); //串口发送数据表示 单片机 串口正常工作
idata_point = 0xF1;
for(j=0;j<15;j++)
{
i = *idata_point;
send_UART(i);
idata_point++;
}
while(1);
}
void serial_port_initial()
{
SCON = 0x50; //0101,0000 8位可变波特率,无奇偶校验位
TMOD = 0x21; //0011,0001 设置顶时器1为8位自动重装计数器
TH1 = RELOAD_COUNT; //设置定时器1自动重装数
TL1 = RELOAD_COUNT;
TR1 = 1; //开定时器1
ES = 1; //允许串口中断
EA = 1; //开总中断
}
void send_UART(unsigned char i)
{
ES = 0; //关串口中断
TI = 0; //清零串口发送完成中断请求标志
SBUF = i;
while(TI ==0); //等待发送完成
TI = 0; //清零串口发送完成中断请求标志
ES = 1; //允许串口中断
}
void UART_Interrupt_Receive(void) interrupt 4
{
unsigned char k = 0;
if(RI==1)
{
RI = 0;
k = SBUF;
if(k==Self_Define_ISP_Download_Command) //是自定义下载命令
{
delay(); //延时1秒就足够了
delay(); //延时1秒就足够了
soft_reset_to_ISP_Monitor(); //软复位到系统ISP监控区
}
send_UART(k);
}
else
{
TI = 0;
}
}
void soft_reset_to_ISP_Monitor(void)
{
IAP_CONTR = 0x60; //0110,0000 软复位到系统ISP监控区
}
void delay(void)
{
unsigned int j = 0;
unsigned int g = 0;
for(j=0;j<5;j++)
{
for(g=0;g<60000;g++)
{
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
}
}
}
void display_MCU_Start_Led(void)
{
unsigned char i = 0;
for(i=0;i<3;i++)
{
MCU_Start_Led = 0; //顶亮MCU开始工作指示灯
delay();
MCU_Start_Led = 1; //熄灭MCU开始工作指示灯
delay();
MCU_Start_Led = 0; //顶亮MCU开始工作指示灯
}
}
史海拾趣
|
别看程序长,只问两个小点, (1)下面的红色显示处,字母\'b\'可以去掉吗??? (2)下面的蓝色显示处,字母\'x\'是什么意思呢???可以去掉吗??? LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY alu IS ...… 查看全部问答> |
|
一开始我用查询方式来读取按键 可是由于后面有delay();很大机会按键的时候在delay里读不出来 后来采用了中断,可是中断就这几个口,根本无法满足需求。。。 … 查看全部问答> |
|
各位兄弟大家好,最近老大说让我看看DDK方面的资料,可能是要我做Windows Mobile或者Windows方面的驱动开发了,期望大家给点方向和资料什么的 各位兄弟大家好,最近老大说让我看看DDK方面的资料,可能是要我做Windows Mobile或者Windows方面的驱动开发了,期望大家给点学习的方向和电子版的资料什么的,我基础比较差一点,之前一直使用C++做win mobile 应用方面的开 ...… 查看全部问答> |
|
初学驱动,学到一个函数,希望高手能帮忙解惑,听说标题要长。。。。。。。。。。。。。 Windows 下的驱动编程 有个函数 NTKERNELAPI NTSTATUS IoGetDeviceObjectPointer( __in PUNICODE_STRING ObjectName, __in ACCESS_MASK DesiredAccess, __out PFILE_OBJECT *FileObject, &nbs ...… 查看全部问答> |
|
将模拟信号转换为数字信号,再把数字信号通过串口在终端读出数据! 我是一个单片机菜鸟,还没有入门,用的是ATmega128单片机,用PF2(ADC2)输入模拟信号,要写一个程序把模拟信号转换为数字信号并通过串口在终端显示出来转换后的数字信号信息,那位大侠帮帮忙,多谢!… 查看全部问答> |
|
单位一台控制飞剪(切头切尾)的6RA70控制箱出现报F004故障,有时几个班出现一次,有时一个班出现几次。在这之前,出现过70箱面板无显示,于是更换了电源板(在原电源板进线电源和保险都正常的情况下,认为是电源板有问题),当时试车正常,但之后 ...… 查看全部问答> |
|
看了一下712的管脚的好象没有外部中断管脚,除了710中的P2.8到P2.10是外部中断管脚。除了712中的capture,还有没有 ...… 查看全部问答> |




