Администрация форума не несёт ответственности за достоверность информации и оставляет за собой право редактировать или в особых случаях даже удалять посты без предупреждения. Спасибо за понимание.

Программирование ATMEL в BASCOM.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.



BASCOM 8051

Сообщений 1 страница 30 из 31

1

Кто-нибудь пробовал писать? А то принесли партию AT89C51-20PI и возник вопрос какой дат файл подключать  (89c51cc.dat; 89C51RC.dat; 89C51RD.dat).

0

2

8052.dat пока не используешь уникальные регистры, большого значения это не имеет - все они совместимы.

0

3

подниму тему
есть страшный китайский зверь stc 11f16xe
шьётся через бутлоадер по uart
что-то совместимое с 8051

у кого есть bascom 8051 посвежее? а то на сайте демо от 2007 года

0

4

Возможно глупый вопрос, но...
Реально ли зашить нашу кр1816ВЕ51(31) кодом написанным на BASCOM-8051 и главное, будет ли работать?

0

5

думаю, будет. Если это 100% копия :)
https://ru.wikipedia.org/wiki/Intel_8051

0

6

BASCOM-8051 я думаю закинули.
dron711
Пробуй какой нибудь код мелкий написать.

0

7

Седалищный нерв тонко чувствовал приближающиеся изменения...
Решил я глянуть на рынок МК немного с иной стороны. Поискал, что еще есть работоспособного.
Ну, нашел клоны PIC
Нашел пару клонов AVR (уже упоминавшийся lgt8f)
Нашел вообще на своём ядре - PADAUK. Даже хотел было прикупить, но у ходовых там весьма скромно с памятью программ (обычно 1-1.5-3,4 кБ). И особый программатор надо, хотя народ слепил на STM32 какой-то usb программатор.

И решил я, что 8051 - самое оптимальное решение.
И снова полез искать. Всё тот же STC - фактически единственный, который выпускается и растёт как минимум с 2015 года.
На неделе запрошу у поставщика цены на 5-10 ходовых моделей и сообщу сюда.
Возможно, это - самое адекватное в плане замены AVR. Тем более, есть Bascom-51 - уже проще писать.

ps
а еще нашел Megawin - что-то даже на Алиэкспресс продаётся

pps
наткнулся на интересный обзор:
https://vc.ru/u/1769747-vladimir-dennic … lektroniki

Отредактировано Александр Д. (2023-11-25 22:44:40)

0

8

Я, так понимаю, вам для промышленных масштабов.
я так уже вспомнил старые добрые советские времена :mybb:  Полез на свалку истории радиодеталей :music:

0

9

семейство не умерло, практически все крупные игроки его проектируют и производят.

0

10

Александр Д. написал(а):

Возможно, это - самое адекватное в плане замены AVR.

Чем вызвана необходимость замены?

Нужен МК чем дешевле тем лучше?
Нужен МК с более функциональной встроенной периферией?
Просто захотелось поработать с другими МК?

0

11

Пётр написал(а):

Нужен МК чем дешевле тем лучше?

Желание наличия выбора. К PIC возвращаться не хочу. Если только pic24 - но цена не радует. Да и мы под санкциями, компания не жалует нас!

Пётр написал(а):

Нужен МК с более функциональной встроенной периферией?

Иногда - да. Хочется и uart-ов поболе, и таймеров бы еще пару, и , и, и ))))

Пётр написал(а):

Просто захотелось поработать с другими МК?

Да, но не stm32 и иже с ними - ни Си не терплю, ни потребностей в "мощности" нет))

0

12

Вы что, у на свои процессоры есть. Вот например:
1887ВЕ7Т Купить: 11880.00 руб с НДС.  :crazyfun:

0

13

они такие же "наши", как я - китаец.
Даже буквы - и те, болгарские...

0

14

sva-don написал(а):

1887ВЕ7Т

Там до сих пор есть ряд аппаратных ошибок (уже не помню каких), править видимо не собираются (уже много лет). В своё время косился на них (в силу определённых обстоятельств), но желание бороться с ветряными мельницами за такие бабки - не появилось (спонсоров естественно нет :D ).

+1

15

я подходил на выставке: Ну, как оно, с импортозамещением? )) когда будет горсть МК - за тыщу?
отшутились.

0

16

RDW написал(а):

бороться с ветряными мельницами за такие бабки

Я когда цену увидел то немного приху, извините удивился. Импортозамещение в деле не иначе. :crazyfun:

0

17

МК от Мегавин
Цена в Китае:

Unit price/¥:
                                           10pcs   100pcs     1000pcs
MG82F6D17 AS8                    5          4.5           3.5
MG82F6D17 AL20                 3.5        3              1.5
MG82F6D17 AZ20                 3.8        3              2.5

последние цифры в маркировки - количество выводов, буквы - тип корпуса

http://www.megawin.com.tw/en-global/pro … /MG82F6D17

документация: wwwmegawin.com.tw/zh-tw/support/downloadDocument/136/698

0

18

Здравствуйте, на глаза попались контроллеры stc, очень привлекли ценой и доступностью в продаже, одна проблема, не знаю с какой стороны к нему подойти.  :canthearyou:

STC8H1K08-36I-TSSOP20  Микроконтроллер STC, ядро 8051T(33МГЦ). 64кб Flash, 1.25кб SRAM. 2 UART, 1 I2C, 9 каналов 10-бит АЦП. Цена в нашем регионе всего 26 рублей. Никто не интересовался такими?

0

19

я интересовался в 2019-2021
bascom51 оживляет это семейство на ура.
Кое что брал из примеров компании, были под Кейл.
А где Вы такой нашли и по такой цене?

https://www.stcmicro.com/stc/stc8h1k08.html

Весьма заманчиво, спасибо!! Задал вопрос поставщику.

Отредактировано Александр Д. (2023-12-01 10:58:26)

0

20

Александр, в "Промэлектронике" г. Екатеринбург

https://www.promelec.ru/product/527335/     26 рублей
https://www.promelec.ru/product/527337/     36 рублей

0

21

спасибо, уже видел. Давно у них ничего не покупал - сразу с Али везу. Поэтому не знаю, сколько возьмут за доставку в Подмосковье.
ps: Узнал: доставка - как партия из 10 штук из Китая ))

pps:
Заказал на Али 10 штук.

Тем более, у этого производителя МК щьются без программатора, обычный usb-ttl преобразователь. А некоторые МК покрупнее - через USB.

Отредактировано Александр Д. (2023-12-01 12:33:26)

0

22

Александр, в bascom8051 не нашёл библиотеку dat по него....   Где-то можно скачать?

0

23

не совсем понял вопрос
Я подбирал что-то из типовых (открывал dat и сравнивал даташиты).
а что нового в МК - добавлял через регистры, описано в примерах на Си, под среду Keil

0

24

catalex написал(а):

Александр, в "Промэлектронике" г. Екатеринбург

И тут заказал несколько моделей МК.

0

25

¥                                                       10pcs  100pcs  1000pcs

STC8H1K08-36I TSSOP20                     3       2.2         1
STC8H1K17-36I TSSOP20                     3       2.2         1

0

26

Александр Д. написал(а):

catalex написал(а):
    Александр, в "Промэлектронике" г. Екатеринбург
И тут заказал несколько моделей МК.

Получил сегодня
Но, как назло, надо уехать по делам на неделю-две...

Упаковали знатно: огромная коробочка, 3 пакетика микросконтроллеров и огромное количество силикагеля и "пупырок" )))

0

27

STC8H1K08
пока смог только помигать св.диодом из Кейла.
Присобачить все изменения в регистрах для этого МК пока не смог - времени не было.
Но уже что-то ))

Сейчас попробую UART (там аж 4 режима)

ps
uart1 запустил
второй - нет, пока не понял причину

Отредактировано Александр Д. (2024-01-02 00:14:01)

0

28

ну что же... Уже кое-что!
режимы портов выбираю, резистор-подтяжку устанавливаю, кнопку опрашиваю, светодиодом управляю, Int0/Int1 работают и режим реакции задаю.

Print не работает. Я не знаток ассемблера 51, но вижу, что баском устанавливает "не те" биты в нужных регистрах. Пока не понимаю причину.
Думаю, и input работать не будет, но не проверял.

test.bas

$regfile = "STC_8H.DAT"                             ' STC registers list
'$romstart = &H0                                     ' code starting address
$crystal = 11059200                                 ' CPU clock frequence

Dim Temp As Byte

P1ie = &B_0000_0100                                 ' 1: Enable digital signal input
P1m1 = &B_0000_0000 : P1m0 = &B_0010_0000           ' Push-pull output mode
P1pu = &B_0000_0100                                 ' 1: pull-up resistor
My_led Alias P1.5
Knopka Alias P1.2

P3ie = &B_0000_1100                                 ' 1: Enable digital signal input
P3m1 = &B_0000_0000 : P3m0 = &B_0000_0000           '
P3pu = &B_0000_1100                                 ' 1: pull-up resistor

On Int1 Int1_int                                    'Initialise the INT1 Interrupt
Priority Set Int1                                   'set INT1 to the highest priority level (INT1 has by default the highest prio)
'It1 = 0                                            ' Enable INT1 rising and falling interrupt
It1 = 1                                             ' Enable INT1 falling edge interrupt
Enable Interrupts
Enable Int1                                         'enable the interrupt

For Temp = 0 To 9
My_led = 1
Waitms 50

My_led = 0
Waitms 50
Next

Do
'  If Knopka = 0 Then
'   My_led = 1
   Waitms 50
'  Else
   My_led = 0
'  End If
Loop

Int1_int:
   Incr Temp
   If Temp > 5 Then
      My_led = 1
      Temp = 0
   End If
Return

Не всё проверено, но уже что-то!

STC_8H.DAT

[BIT]
ACC = E0
B = F0
PSW = D0
P0 = 80
P1 = 90
P2 = A0
P3 = B0
P4 = c0
P5 = c8
P6 = e8
P7 = f8
SCON = 98
T2CON = C8
IE = A8
IP = B8
TCON = 88

[BYTE]
SP = 81
DPL = 82 
DPH = 83
TH0 = 8C
TH1 = 8D
TL0 = 8A
TL1 = 8B
PCON = 87
TMOD = 89
SBUF = 99
T2MOD = C9
TL2 = CC
TH2 = CD
RCAP2L = CA
RCAP2H = CB
AUXR  = 8E
SADDR = A9
IPH  = B7
SADEN = B9
P_SW1 = a2
P_SW2 = ba
T2H = d6
T2L = d7
S2CON = 9A ' UARTs control register
S2BUF = 9B
S3CON = AC
S3BUF = AD
S4CON = 84
S4BUF = 85
WDT_CONTR = C1    ' Watchdog Timer Register
RSTCFG = FF   ' Reset Configuration Register
WKTCL = AA    ' Power-down wake-up timer count register
WKTCH = AB' WKTEN = 7
P0M1 = 93    ' mode register 1
P0M0 = 94    ' mode register 0
P1M1 = 91' PnM1.x  PnM0.x  Pn.x mode
P1M0 = 92'   0            0         Quasi bidirectional mode
P2M1 = 95'   0            1         Push-pull output mode
P2M0 = 96'   1            0         High-impedance input mode
P3M1 = b1'   1            1         Open drain mode
P3M0 = b2
P4M1 = b3
P4M0 = b4
P5M1 = c9
P5M0 = ca
P6M1 = cb
P6M0 = cc
P7M1 = e1
P7M0 = e2
ADC_CONTR = BC  ' control register
ADC_RES = BD  ' Result High Byte
ADC_RESL= BE  ' Result Low Byte
ADCCFG = DE  '  Configuration Register

[XBYTE]
P0PU = FE10 ' Pull-up resistor control register
P1PU = FE11' Internal 4.1K pull-up resistor control bit
P2PU = FE12' 0: Disable 4.1K pull-up resistor inside the port
P3PU = FE13' 1: Enable 4.1K pull-up resistor inside the port
P4PU = FE14
P5PU = FE15
P6PU = FE16
P7PU = FE17
P0NCS = FE18 ' Schmitt trigger control register
P1NCS = FE19' Schmitt trigger control bit:
P2NCS = FE1a '0: Enable schmitt trigger function on the port. (Schmitt trigger is enabled by default after power-on reset.)
P3NCS = FE1b' 1: Disable schmitt trigger function on the port.
P4NCS = FE1c
P5NCS = FE1d
P6NCS = FE1e
P7NCS = FE1f
P0SR = FE20 ' Level Shift Rate Register
P1SR = FE21
P2SR = FE22' Level shifting speed control bits:
P3SR = FE23' 0: Fast level shifting, and the corresponding up and down impact will be relatively large.
P4SR = FE24' 1: Slow level shifting, and the corresponding up and down impact will be relatively small.
P5SR = FE25
P6SR = FE26
P7SR = FE27
P0IE = FE30 '  Input Enable Control Register
P1IE = FE31
P2IE = FE32
P3IE = FE33
P4IE = FE34
P5IE = FE35 ' Digital signal input enable control:
P6IE = FE36 ' 0: Disable digital signal input.
P7IE = FE37 ' 1: Enable digital signal input. If the I/O is used as a digital port, it must be set to 1
CKSEL = FE00 '  Clock selection register
CLKDIV = FE01 ' Clock Division Register
IRCCR = FE02  ' Internal Oscillator control register
XOSCCR = FE03 ' External Oscillator control register
IRC32KCR = FE04 ' Internal 32KHz Oscillator control register
MCLKOCR = FE05 ' Main clock output control register
X32KCR = FE08 ' External 32KHz Oscillator control register
P0DR = FE28 ' Drive Current Control Register
P1DR = FE29' 0: Enhanced drive ability
P2DR = FE2a' 1: General drive ability
P3DR = FE2b
P4DR = FE2c
P5DR = FE2d
P6DR = FE2e
P7DR = FE2f
ADCTIM = FEA8 ' Timing Control Register

[SBIT]
TF1 = 8f
TR1 = 8e
TF0 = 8d
TR0 = 8c
IE1 = 8b
IT1 = 8a
IE0 = 89
IT0 = 88
EA  = AF   ' IE
EPCA_LVD = AE
EADC_SPI = AD
ES  = AC
ET1 = AB
EX1 = AA
ET0 = A9
EX0 = A8
PPCA_LVD = BE  ' IP
PADC_SPI = BD
PS  = BC
PT1 = BB
PX1 = BA
PT0 = B9
PX0 = B8
CY  = d7  ' PSW
AC  = d6
F0  = d5
RS1 = d4
RS0 = d3
OV  = d2
F1 = d1
P  = d0
RD  = b7  ' P3
WR  = b6
T1  = b5
T0  = b4
INT1 = b3
INT0 = b2
TXD = b1
RXD = b0
SM0 = 9f  ' SCON
SM1 = 9e
SM2 = 9d
REN = 9c
TB8 = 9b
RB8 = 9a
TI  = 99
RI  = 98
TF2  = cf  ' T2CON
EXF2 = ce
RCLK = cd
TCLK = cc
EXEN2 =cb
TR2  = ca
C_T2 = c9
CP_RL2= c8

[MISC]
up = STC8H
IRAM = 256
clockdiv=1
'org = 2E
I_int = &H03
I_tmr = &H0B
I_int1 = &H13
I_tmr1 = &H1B
I_uart1 = &H23
I_adc = &H2B
I_lvd = &H33
I_uart2 = &H43
I_spi = &H4B
I_int2 = &H53
I_int3 = &H5B
I_tmr2 = &H63
I_user = &H6B
I_int4 = &H83
I_uart3 = &H8B
I_uart4 = &H93
I_tmr3 = &H9B
I_tmr4 = &HA3
I_cmp = &HAB
I_i2c = &HC3
I_usb = &HCB
I_pwma = &HD3
I_pwmb = &HDB
'I_tksu = &H011B
'I_rtc = &H0123
'I_p0int = &H012B
'I_p1int = &H0133
'I_p2int = &H013B
'I_p3int = &H0143
'I_p4int = &H014B
'I_p5int = &H0153
'I_p6int = &H015B
'I_p7int = &H0163
'I_dma_m2m = &H017B
'I_dma_adc = &H0183
'I_dma_spi = &H018B
'I_dma_ur1t = &H0193
'I_dma_ur1r = &H019B
'I_dma_ur2t = &H01A3
'I_dma_ur2r = &H01AB
'I_dma_ur3t = &H01B3
'I_dma_ur3r = &H01BB
'I_dma_ur4t = &H01C3
'I_dma_ur4r = &H01CB
'I_dma_lcm = &H01D3
'I_lcm = &H01DB

' ADC Register
ADC_POWER = 7
ADC_START = 6
ADC_FLAG = 5
ADC_EPWMT = 4
'ADC_CHS = 3210 ' ADC channel selection bits

CCON  = D8 ' PCA
CMOD  = D9
CCAPM0 = DA
CCAPM1 = DB
CCAPM2 = DC
CCAPM3 = DD
CCAPM4 = DE
CCAPM5 = DF

CL   = E9
CCAP0L = EA
CCAP1L = EB
CCAP2L = EC
CCAP3L = ED
CCAP4L = EE
CCAP5L = EF

CH   = F9
CCAP0H = FA
CCAP1H = FB
CCAP2H = FC
CCAP3H = FD
CCAP4H = FE
CCAP5H = FF

PCA_PWM0 = F2
PCA_PWM1 = F3
PCA_PWM2 = F4
PCA_PWM3 = F5
PCA_PWM4 = F6
PCA_PWM5 = F7

'PCON = 87
SMOD = 7
SMOD0 = 6
LVDF = 5
POF = 4
GF1 = 3
GF0 = 2
PD = 1
IDL = 0

' ISP_IAP_EEPROM Register
IAP_DATA = C2  ' IAP Flash Data Register
IAP_ADDRH = C3   ' IAP Flash Address High Byte
IAP_ADDRL = C4   ' IAP Flash Address Low Byte
IAP_CMD = C5   ' IAP Flash Command Register
IAP_TRIG = C6   ' IAP Flash Trigger register
IAP_CONTR = C7  ' IAP Control Register
IAP_TPS = F5 ' IAP Waiting Time Control Register

SPSTAT = CD ' SPI Status register
SPIF = 7
WCOL = 6

SPSTAT = CE ' SPI Control Register
SSIG = 7
SPEN = 6
DORD = 5
MSTR = 4
CPOL = 3
CPHA = 2

'SPSTAT = CF ' SPI Data Register

' Registers Related to I2C
' 16-bit  advanced  PWM  timer
' USB Universal Serial Bus  STC8H8K64U family

' SPI Register
SPSTAT = 84
SPCTL  = 85
SPDAT  = 86

' CCON
CF  = 7
CR  = 6
CCF5 = 5
CCF4 = 4
CCF3 = 3
CCF2 = 2
CCF1 = 1
CCF0 = 0

S2SM0 = 7 ' UART2 control register S2CON = 9A
S2SM2 = 5
S2REN = 4
S2TB8 = 3
S2RB8 = 2
S2TI  = 1
S2RI  = 0
S3SM0 = 7 ' UART3 control register S3CON = AC
S3ST3 = 6
S3SM2 = 5
S3REN = 4
S3TB8 = 3
S3RB8 = 2
S3TI  = 1
S3RI  = 0
S4SM0 = 7 ' UART4 control register S4CON = 84
S4ST3 = 6
S4SM2 = 5
S4REN = 4
S4TB8 = 3
S4RB8 = 2
S4TI  = 1
S4RI  = 0

STC8H1K08
https://forumupload.ru/uploads/0000/25/b8/439/t510217.jpg

Отредактировано Александр Д. (2024-01-04 16:50:56)

+2

29

Александр Д. написал(а):

Я не знаток ассемблера 51, но вижу, что баском устанавливает "не те" биты в нужных регистрах.
Пока не понимаю причину.

Может, есть ошибки (недописки) в файле DAT или XML ?
Bascom изначально "знал" этот МК или они (эти файлы) корректировались ?

0

30

я почти с нуля писал DAT файл

запустил оба uart через регистры. Придётся написать свои PRINT и INPUT ...

UART 1/2

$regfile = "STC_8H.DAT"                             ' STC registers list
$crystal = 11059200                                 ' CPU clock frequence

P3ie = &B_0000_0001                                 ' 1: Enable digital signal input
P3m1 = &B_0000_0000 : P3m0 = &B_0000_0000           ' Push-pull output mode
P3pu = &B_0000_0000                                 ' 1: pull-up resistor

Scon = &H50
S2con = &H10
T2l = &HE8
T2h = &HFF
'Auxr = &H14                                         ' UART1
Auxr = &H15                                         ' UART 1 + 2

P_sw1 = &H00                                        'RXD/P3.0, TXD/P3.1
'P_sw1 = &H40                                  'RXD_2/P3.6, TXD_2/P3.7
'P_sw1 = &H80                                  'RXD_3/P1.6, TXD_3/P1.7
'P_sw1 = &Hc0                                  'Rxd_4/P4.3, Txd_4/P4.4

P_sw2 = &H00                                        'RXD2/P1.0, TXD2/P1.1
'P_SW2 = &H01                                 'RXD2_2/P4.6, TXD2_2/P4.7

'Ren = 1                                             ' enable recieving
'Es = 1                                              ' enable interrupt
'Ea = 1                                              ' enable All interrupt

Do
Sbuf = 49
My_led = 1
Waitms 100

S2buf = 50
My_led = 0
Waitms 100
Loop

Переключение между двумя UART

$regfile = "STC_8H.DAT"                 ' STC registers list
$crystal = 11059200                     ' CPU clock frequence

'$ramstart = &H100                                   ' RAM starting address
'$ramsize = 128

Dim Text$ As String * 11
Dim Mig As Byte , N_uart As Byte

My_led Alias P1.5
Knopka Alias P1.0                       ' input

P1ie = &B_0000_0001                     ' 1: Enable digital signal input
P1m1 = &B_0000_0000 : P1m0 = &B_0010_0000       ' Push-pull output mode
P1pu = &B_0000_0001                     ' 1: pull-up resistor

For Mig = 0 To 9                        ' Помигаем
  My_led = 1
  Waitms 150

  My_led = 0
  Waitms 150
Next

P3ie = &B_0000_0001                     ' 1: Enable digital signal input
P3m1 = &B_0000_0000 : P3m0 = &B_0000_0000       ' Push-pull output mode
P3pu = &B_0000_0000                     ' 1: pull-up resistor

Scon = &H50
S2con = &H10
T2l = &HE8
T2h = &HFF
'Auxr = &H14                                         ' UART1
Auxr = &H15 F                           ' UART 1 + 2

P_sw1 = &H00                            'RXD/P3.0, TXD/P3.1
'P_sw1 = &H40                                  'RXD_2/P3.6, TXD_2/P3.7
'P_sw1 = &H80                                  'RXD_3/P1.6, TXD_3/P1.7
'P_sw1 = &Hc0                                  'Rxd_4/P4.3, Txd_4/P4.4

P_sw2 = &H00                            'RXD2/P1.0, TXD2/P1.1
'P_SW2 = &H01                                 'RXD2_2/P4.6, TXD2_2/P4.7

Mig = 0

Do
  My_led = 1
  Text$ = ""

  Incr Mig

  Text$ = "1: " + Str(mig) + Chr(10) + Chr(13)
  N_uart = 1 : Gosub Prn_uart

  Text$ = "2: " + Str(mig) + Chr(10) + Chr(13)
  N_uart = 2 : Gosub Prn_uart

  Waitms 50

  My_led = 0
  Waitms 50
Loop

'=========================================
Prn_uart:
  Dim Tstr$ As String * 1
  Dim Temp As Byte , Kolvo As Byte , Simvol As Byte

  Kolvo = Len(text$)

  For Temp = 1 To Kolvo
    Simvol = Mid(text$ , Temp , 1)

    If N_uart = 1 Then
      Sbuf = Simvol
      While Ti = 0 : Wend
      Ti = 0
    Else
      S2buf = Simvol
      While S2con.1 = 0 : Wend
      S2con.1 = 0
    End If
  Next

  Erase Simvol
  Erase Kolvo
  Erase Temp
  Erase Tstr$
Return

Отредактировано Александр Д. (2024-01-04 16:49:59)

0