刚学单片机代码实例不懂代码意思希望给出下面代码的注释解释,感激不尽

单片机高手帮忙哈(汇编语言),帮忙解释下下面每一步程序的含义,就是注释下每一步,越详细越好,谢谢!_百度知道
单片机高手帮忙哈(汇编语言),帮忙解释下下面每一步程序的含义,就是注释下每一步,越详细越好,谢谢!
用定时器&#47,#0FFH,如此循环下去,#05H
TMOD;计数器T0对外部脉冲进行计数,#0CH
F0RETIPT0D。定时1ms后;
TL0,每计数100个脉冲后,#0FFH
TL0。假定用MCS-51单片机的晶体振荡器的频率为6MHZ,#0FEH
F0,要求编写出程序:
TMOD,请使用方式1实现,T0转为定时工作方式:程序如下ORG
0100HMAIN; AJMP
HEREPT0J,#01H
TH0,又转为计数方式,
提问者采纳
F0;F0标志为1则跳到PT0D
TMOD;配置定时器0为16位计数器
TH0,p3;00h复位入口AJMP
MAINF0置0;清通用标志位
F0配置计数器初值0FF9CH,#05H定时器0中断入口LJMP
,使得刚好1ms时溢出产生中断
#9CH允许定时器0中断
.4为计数器脉冲输入
TH0,使得下次中断时 转换到计数模式RETI汇编好就好在这里;MAIN主程序入口MAIN,产生中断
TL0,#0FEH跳到PT0JORG
0100H启动计数器
TMOD,使得下次中断时 转换到定时器模式
TMOD; AJMP
HERE配置定时器0为16位定时器,效率高;RETIF0置1;死循环;装载计数初值,#0CH允许总中断HERE;模式寄存器配置定时器0为16位计数器,#05H
,使得刚好计数100个脉冲时产生中断
,(等待中断)PT0J;中断返回END ,#0FFH
,使得计数100个脉冲时刚好溢出;中断返回PT0D,PT0D跳到MAIN
000BH装载计数初值
提问者评价
按照你说的,真的成功了,好开心,谢谢你!
其他类似问题
为您推荐:
汇编语言的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁刚读了一个俄罗斯方块的完整代码,学得代码不错,但很多不懂,请高手给点注释,越详细越好。
[问题点数:40分]
刚读了一个俄罗斯方块的完整代码,学得代码不错,但很多不懂,请高手给点注释,越详细越好。
[问题点数:40分]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
2013年 总版技术专家分年内排行榜第三
2012年 总版技术专家分年内排行榜第七
2013年 总版技术专家分年内排行榜第三
2012年 总版技术专家分年内排行榜第七
2013年 总版技术专家分年内排行榜第三
2012年 总版技术专家分年内排行榜第七
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。有点看不懂,求大神帮忙注释下还有解释下_单片机吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:113,761贴子:
有点看不懂,求大神帮忙注释下还有解释下收藏
//******************************************************************************// RO_PINOSC_TA0_WDTp_Wheel_Buttons example// Touch the five wheel buttons to turn on/off the center button LED// RO method capactiance measurement using PinOsc IO, TimerA0, and WDT+////
Schematic Description: // //
MSP430G2452//
+---------------+//
C--------|P2.4//
C----------|P2.1//
C------|P2.3//
C--------|P2.2//
C----------|P2.5//
C----------|P2.0// //
The WDT+ interval represents the measurement window.
The number of //
counts within the TA0R that have accumulated during the measurement//
window represents the capacitance of the element. This is lowest //
power option with either LPM3 (ACLK WDTp source) or LPM0 (SMCLK WDTp //
source).////******************************************************************************#include "CTS_Layer.h"#include "TFT.h"// Uncomment to have this compiler directive run characterization functions only// Comment to have this compiler directive run example application//#define ELEMENT_CHARACTERIZATION_MODE#define DELAY 3000 // Timer delay timeout count, msec = 500 msecstruct Element * keyP// Pointer to the Element structure#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0)) //精确延时1ms
#ifdef ELEMENT_CHARACTERIZATION_MODE// Delta Counts returned from the API function for the sensor during characterizationunsigned int wheelCnt[5];// Becuase the Wheel is composed of five elements#endif// Sleep Function// Configures Timer A to run off ACLK, count in UP mode, places the CPU in LPM3 // and enables the interrupt vector to jump to ISR upon timeout /*****************主函数*************************************/uchar const tab1[]={/* 图像
*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x07,0x80,0x00,0x00,0x07,0x80,0x00,0x00,0x0F,0xC0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x1F,0xE0,0x00,0x00,0x1F,0xE0,0x00,0x00,0x3F,0xE0,0x00,0x00,0x3F,0xF0,0x00,0x00,0x7F,0xF0,0x00,0x00,0x7F,0xF8,0x00,0x00,0x7F,0xF8,0x00,0x00,0xFF,0xFC,0x00,0x00,0xFF,0xFC,0x00,0x01,0xFF,0xFE,0x00,0x01,0xFF,0xFE,0x00,0x03,0xFF,0xFE,0x00,0x03,0xFF,0xFF,0x00,0x07,0xFF,0xFF,0x00,0x07,0xFF,0xFF,0x80,0x07,0xFF,0xFF,0x80,0x0F,0xFF,0xFF,0xC0,0x0F,0xFF,0xFF,0xC0,0x1F,0xFF,0xFF,0xC0,0x1F,0xFF,0xFF,0xE0,0x3F,0xFF,0xFF,0xE0,0x3F,0xFF,0xFF,0xF0,0x7F,0xFF,0xFF,0xF0,0x7F,0xFF,0xFF,0xF8,0x7F,0xFF,0xFF,0xF8,0xFF,0xFF,0xFF,0xFC,0x00,0x00,0x00,0x00};uchar const tab2[]={/* 图像
*/0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFC,0x7F,0xFF,0xFF,0xF8,0x7F,0xFF,0xFF,0xF8,0x3F,0xFF,0xFF,0xF8,0x3F,0xFF,0xFF,0xF0,0x1F,0xFF,0xFF,0xF0,0x1F,0xFF,0xFF,0xE0,0x0F,0xFF,0xFF,0xE0,0x0F,0xFF,0xFF,0xC0,0x0F,0xFF,0xFF,0xC0,0x07,0xFF,0xFF,0x80,0x07,0xFF,0xFF,0x80,0x03,0xFF,0xFF,0x80,0x03,0xFF,0xFF,0x00,0x01,0xFF,0xFF,0x00,0x01,0xFF,0xFE,0x00,0x01,0xFF,0xFE,0x00,0x00,0xFF,0xFC,0x00,0x00,0xFF,0xFC,0x00,0x00,0x7F,0xF8,0x00,0x00,0x7F,0xF8,0x00,0x00,0x3F,0xF8,0x00,0x00,0x3F,0xF0,0x00,0x00,0x1F,0xF0,0x00,0x00,0x1F,0xE0,0x00,0x00,0x1F,0xE0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x07,0x80,0x00,0x00,0x07,0x80,0x00,0x00,0x03,0x80,0x00,0x00,0x03,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};uchar const tab3[]={/* 图像
*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0x03,0xE0,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0xE0,0x00,0x00,0x00,0xFF,0xE0,0x00,0x00,0x07,0xFF,0xE0,0x00,0x00,0x1F,0xFF,0xE0,0x00,0x00,0x7F,0xFF,0xE0,0x00,0x03,0xFF,0xFF,0xE0,0x00,0x0F,0xFF,0xFF,0xE0,0x00,0x3F,0xFF,0xFF,0xE0,0x00,0xFF,0xFF,0xFF,0xE0,0x07,0xFF,0xFF,0xFF,0xE0,0x1F,0xFF,0xFF,0xFF,0xE0,0x3F,0xFF,0xFF,0xFF,0xE0,0x07,0xFF,0xFF,0xFF,0xE0,0x01,0xFF,0xFF,0xFF,0xE0,0x00,0x7F,0xFF,0xFF,0xE0,0x00,0x1F,0xFF,0xFF,0xE0,0x00,0x03,0xFF,0xFF,0xE0,0x00,0x00,0xFF,0xFF,0xE0,0x00,0x00,0x3F,0xFF,0xE0,0x00,0x00,0x07,0xFF,0xE0,0x00,0x00,0x01,0xFF,0xE0,0x00,0x00,0x00,0x7F,0xE0,0x00,0x00,0x00,0x1F,0xE0,0x00,0x00,0x00,0x03,0xE0,0x00,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0x00,0x20};uchar const tab4[]={/* 图像
*/0x40,0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x00,0x7F,0x80,0x00,0x00,0x00,0x7F,0xE0,0x00,0x00,0x00,0x7F,0xFC,0x00,0x00,0x00,0x7F,0xFF,0x00,0x00,0x00,0x7F,0xFF,0xC0,0x00,0x00,0x7F,0xFF,0xF0,0x00,0x00,0x7F,0xFF,0xFE,0x00,0x00,0x7F,0xFF,0xFF,0x80,0x00,0x7F,0xFF,0xFF,0xE0,0x00,0x7F,0xFF,0xFF,0xF8,0x00,0x7F,0xFF,0xFF,0xFF,0x00,0x7F,0xFF,0xFF,0xFF,0xC0,0x7F,0xFF,0xFF,0xFF,0xC0,0x7F,0xFF,0xFF,0xFE,0x00,0x7F,0xFF,0xFF,0xF8,0x00,0x7F,0xFF,0xFF,0xE0,0x00,0x7F,0xFF,0xFF,0x00,0x00,0x7F,0xFF,0xFC,0x00,0x00,0x7F,0xFF,0xF0,0x00,0x00,0x7F,0xFF,0xC0,0x00,0x00,0x7F,0xFE,0x00,0x00,0x00,0x7F,0xF8,0x00,0x00,0x00,0x7F,0xE0,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00};uchar const tab5[]={/* 图像
*/0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF};void sleep(unsigned int time){
TA0CTL = TASSEL_1+MC_1+TACLR;
TA0CCTL0 &= ~CCIFG;
TA0CCTL0 |= CCIE;
__bis_SR_register(LPM3_bits+GIE);
__no_operation();}// Main Functionvoid main(void){
WDTCTL = WDTPW + WDTHOLD;
// Stop watchdog timer
BCSCTL1 = CALBC1_8MHZ;
// Set DCO to 1, 8, 12 or 16MHz
DCOCTL = CALDCO_8MHZ;
BCSCTL1 |= DIVA_0;
// ACLK/1 [ACLK/(0:1,1:2,2:4,3:8)]
BCSCTL2 |= DIVS_3;
// SMCLK/8 [SMCLK/(0:1,1:2,2:4,3:8)]
BCSCTL3 |= LFXT1S_2;
// LFXT1 = VLO Clock Source
//P1OUT = 0x00;// Drive all Port 1 pins low
//P1DIR = 0xFF;// Configure all Port 1 pins outputs
P2SEL &= ~(BIT6 + BIT7);// Configure XIN (P2.6) and XOUT (P2.7) to GPIO
P2DIR|=BIT3+BIT4+BIT5+BIT6+BIT7;// Drive all Port 2 pins low
P2DIR|=BIT3+BIT4+BIT5+BIT6+BIT7;// Configure all Port 2 pins outputs
// Initialize Baseline measurement
TI_CAPT_Init_Baseline(&wheel_buttons);
// Update baseline measurement (Average 5 measurements)
TI_CAPT_Update_Baseline(&wheel_buttons,5);
TFT_init();
display_rgbw(0xff,0xff);
#ifdef ELEMENT_CHARACTERIZATION_MODE// Get the raw delta counts for element characterization TI_CAPT_Custom(&wheel_buttons,wheelCnt);__no_operation(); // Set breakpoint here#endif#ifndef ELEMENT_CHARACTERIZATION_MODE// Return the pointer to the element which has been touchedkeyPressed = (struct Element *)TI_CAPT_Buttons(&wheel_buttons);// If a button has been touched, then take some actionif(keyPressed){// UPif(keyPressed == &down_element){
set_position(0X30,0X4f,0X00,0X25);
for(int i=0;i&150;i++)
unsigned char m=tab1[i];
for(int j=0;j&8;j++) { if((m&0x80)==0x80) {write_data(0x07,0xe0);
}else {write_data(0xff,0xff);}m&&=1;}
}}// RIGHTif(keyPressed == &up_element){ set_position(0X56,0X7d,0X2c,0X4f);
for(int i=0;i&150;i++)
{ unsigned char m=tab4[i]; for(int j=0;j&8;j++) {if((m&0x80)==0x80) {write_data(0x07,0xe0);}else {write_data(0xff,0xff);}m&&=1;}
}}// LEFTtif(keyPressed == &right_element){
set_position(0X03,0X2a,0X2c,0X4f);
for(int i=0;i&150;i++)
{ unsigned char m=tab3[i]; for(int j=0;j&8;j++) {if((m&0x80)==0x80) {write_data(0x07,0xe0);}else {write_data(0xff,0xff);}m&&=1;}
}}// DOWNif(keyPressed == &left_element){
set_position(0X30,0X4f,0X51,0X76);
for(int i=0;i&150;i++)
{ unsigned char m=tab2[i]; for(int j=0;j&8;j++) {if((m&0x80)==0x80) {write_data(0x07,0xe0);}else {write_data(0xff,0xff);}m&&=1;}
}}// STOPif(keyPressed == &middle_element){
set_position(0X30,0X4f,0X2c,0X4f);
for(int i=0;i&120;i++)
{ unsigned char m=tab5[i]; for(int j=0;j&8;j++) {if((m&0x80)==0x80) {write_data(0x07,0xe0);}else {write_data(0xff,0xff);}m&&=1;}
}} } else {
set_position(0X30,0X4f,0X00,0X25);
for(int i=0;i&150;i++)
unsigned char m=tab1[i];
for(int j=0;j&8;j++) {if((m&0x80)==0x80) {write_data(0xf8,0x00);}else {write_data(0xff,0xff);}m&&=1;}
set_position(0X30,0X4f,0X51,0X76);
for(int i=0;i&150;i++)
{ unsigned char m=tab2[i]; for(int j=0;j&8;j++) {if((m&0x80)==0x80) {write_data(0xf8,0x00);}else {write_data(0xff,0xff);}m&&=1;}
set_position(0X03,0X2a,0X2c,0X4f);
for(int i=0;i&150;i++)
{ unsigned char m=tab3[i]; for(int j=0;j&8;j++) {if((m&0x80)==0x80) {write_data(0xf8,0x00);}else {write_data(0xff,0xff);}m&&=1;}
set_position(0X56,0X7d,0X2c,0X4f);
for(int i=0;i&150;i++)
{ unsigned char m=tab4[i]; for(int j=0;j&8;j++) {if((m&0x80)==0x80) {write_data(0xf8,0x00);}else {write_data(0xff,0xff);}m&&=1;}
set_position(0X30,0X4f,0X2c,0X4f);
for(int i=0;i&120;i++)
{ unsigned char m=tab5[i]; for(int j=0;j&8;j++) {if((m&0x80)==0x80) {write_data(0xf8,0x00);}else {write_data(0xff,0xff);}m&&=1;}
// Put the MSP430 into LPM3 for a certain DELAY period
sleep(DELAY);
}} // End Main/******************************************************************************/// Timer0_A0 Interrupt Service Routine: Disables the timer and exists LPM3
/******************************************************************************/#pragma vector=TIMER0_A0_VECTOR__interrupt void ISR_Timer0_A0(void){
TA0CTL &= ~(MC_1);
TA0CCTL0 &= ~(CCIE);
__bic_SR_register_on_exit(LPM3_bits+GIE);}
无聊的时候就要多动动脑子!
这是msp430单片机的触摸屏的一个程序,这款单片机以前没接触过,所以来找帮助
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或查看: 564|回复: 0
注释详细的单片机流水灯程序源代码
#include&reg52.h&& & & & & & & & & & & & & & & & & & & & & & & && && & //包含特殊功能寄存器定义的头文件
& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & && &
sbit ADDR0 = P1^0;& & & & & & & & & & & & & & & & & & & & & & & & & & & && &//位地址声明,注意:sbit必须小写,P必须大写
sbit ADDR1 = P1^1;
sbit ADDR2 = P1^2;
sbit ADDR3 = P1^3;
sbit ENLED = P1^4;
int main(void)
{
& & & & & & & & & & & & & & & & & & & & & & & & & & & &&&
& & & & unsigned char cnt1 = 0;& & & && & & & & & & & & & & & & & & & & && & //定义一个字符型变量cnt1,并初始赋值0
& & & & unsigned char cnt2 = 0;& & & && & & & & & & & & & & & & && && &&&//定义一个字符型变量cnt2,并初始赋值0
& & & & unsigned int i = 0;& & & & & & & && && & & & & & & & & & & & & && & //定义无符号整型变量i,并初始赋值0
& & & & ENLED = 0;& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & && & // 使能3-8译码器
& & & & ADDR3 = 1;
& & & & ADDR2 = 1; & & & && && && && && && && && && && &&&// 开启8盏小灯总开关
& & & & ADDR1 = 1;
& & & & ADDR0 = 0;
& & & & while(1)& && && && && && && && && && && &&&//主循环,程序无限循环执行该循环体语句
& & & & & & & & P0 = ~(0x01 && cnt1);& & & && && && && && & // P0等于1左移cnt位,控制8个LED灯,P0等于1时二进制是0b,然后取反变成0b个小灯以此类推
& & & & & & & & for (i=0; i&30000; i++);& & & & & & & & & & & && & //软件延时
& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & && & //移位计数变量自加1
& & & & & & & & cnt1++;
& & & && &&&
& & & & & & & & if(cnt1 &= 8)& & & & & & & & & & & & & & & & & & & & & & & && &//移位计数超过7次后,再重新从0开始
& & & && &&&{
& & & & & && & for (cnt2=0; cnt2&=7; ++cnt2)& && & // 实现从左向右移动
& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & &&&
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & &&&P0 = ~(0x80 && cnt2);& & & & & & & && & //P0等于0x80右移cnt位,控制8个LED灯,P0等于80时二进制是0b,然后取反变成0b个小灯以此类推
& & & & & & & & & & & & & & & &&&for (i=0; i&30000; i++);& & & && & //软件延时
& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & && &
& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & && &
& & & & & & & & & & & & & & & &&&if(cnt2 &= 7)& & & & & & & & & & & & & & & && & //移位计数超过6次后,再重新从0开始
& & & & & & & & & & & & & & & && &{
& & & & & & & & & & & & & & & & & & & & cnt1 = 0;& & & & & & & & & & & & & & & && & //移位计数cnt1等于0时,开始循环
& & & & & & & & & & & & & & & && &}
& & & & & & & & & & & &&&}
& & & &&&& & & &&&}
& & & & & & & & cnt2 = 0;& & & & & & & & & & & & & & & & & & & & & & & & & & & && &//移位计数cnt2等于0时,重新开始程序循环
& && &&&return 0;& & & & & & & & & & & & & & & & & & & & & & & & & & & && &//返回住函数
Powered bysimple-c 简单有趣的一堆c程序,适合初学者认真学习,有详细的注释。 SCM 单片机开发 238万源代码下载-
&文件名称: simple-c
& & & & &&]
&&所属分类:
&&开发工具: Visual C++
&&文件大小: 113 KB
&&上传时间:
&&下载次数: 3
&&提 供 者:
&详细说明:简单有趣的一堆c程序,适合初学者认真学习,有详细的注释。-Simple and interesting bunch c program for beginners to seriously study, detailed notes.
文件列表(点击判断是否您需要的文件,如果是垃圾请在下面评价投诉):
&&C语言100道经典、实用、趣味程序设计编程百例精解.doc
&输入关键字,在本站238万海量源码库中尽情搜索:
&[] - simple 算法的源代码.....................................
&[] - linux简单字符驱动程序的开发,可以进行简单的字符的读和写
&[] - STC12单片机的AD采集程序 10位AD采集}

我要回帖

更多关于 单片机代码实例 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信